System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact fe10867ae1d03fca5a3f7e384fff8c686fdd7482:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 75 73  obalization;..us
0160: 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69  ing System.Runti
0170: 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72 76 69  me.CompilerServi
0180: 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74  ces;..using Syst
0190: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
01a0: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 75 73 69  opServices;..usi
01b0: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
01c0: 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20 53 79 73  ...namespace Sys
01d0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
01e0: 0a 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  .{..    #region 
01f0: 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 48 65  SQLiteContext He
0200: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
0210: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0220: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
0230: 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 63  s represents a c
0240: 6f 6e 74 65 78 74 20 66 72 6f 6d 20 74 68 65 20  ontext from the 
0250: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
0260: 61 72 79 20 74 68 61 74 20 63 61 6e 0d 0a 20 20  ary that can..  
0270: 20 20 2f 2f 2f 20 62 65 20 70 61 73 73 65 64 20    /// be passed 
0280: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 72  to the sqlite3_r
0290: 65 73 75 6c 74 5f 2a 28 29 20 61 6e 64 20 61 73  esult_*() and as
02a0: 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f  sociated functio
02b0: 6e 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ns...    /// </s
02c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
02d0: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
02e0: 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 3a   SQLiteContext :
02f0: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
0300: 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ndle..    {..   
0310: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0320: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
0330: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0340: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
0350: 65 20 6e 61 74 69 76 65 20 63 6f 6e 74 65 78 74  e native context
0360: 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20   handle...      
0370: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0380: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
0390: 65 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78  e IntPtr pContex
03a0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  t;..        #end
03b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
03c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
03d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0410: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0420: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
0430: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
0440: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0450: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
0460: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
0470: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
0480: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
0490: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
04a0: 2f 2f 20 63 6f 6e 74 65 78 74 20 68 61 6e 64 6c  // context handl
04b0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
04c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
04d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
04e0: 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d  ame="pContext">.
04f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
0500: 20 6e 61 74 69 76 65 20 63 6f 6e 74 65 78 74 20   native context 
0510: 68 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a  handle to use...
0520: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
0530: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
0540: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e  ternal SQLiteCon
0550: 74 65 78 74 28 49 6e 74 50 74 72 20 70 43 6f 6e  text(IntPtr pCon
0560: 74 65 78 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  text)..        {
0570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
0580: 69 73 2e 70 43 6f 6e 74 65 78 74 20 3d 20 70 43  is.pContext = pC
0590: 6f 6e 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20  ontext;..       
05a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
05b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
05c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0610: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
0620: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0630: 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
0640: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0650: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74  .        /// Ret
0660: 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72 6c 79  urns the underly
0670: 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74 69 76  ing SQLite nativ
0680: 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61  e handle associa
0690: 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20  ted with this.. 
06a0: 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63         /// objec
06b0: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
06c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
06d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
06e0: 6c 69 63 20 49 6e 74 50 74 72 20 4e 61 74 69 76  lic IntPtr Nativ
06f0: 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  eHandle..       
0700: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0710: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 43 6f  get { return pCo
0720: 6e 74 65 78 74 3b 20 7d 0d 0a 20 20 20 20 20 20  ntext; }..      
0730: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
0740: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
0750: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
07a0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
07b0: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
07c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
07d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
07e0: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
07f0: 74 20 72 65 73 75 6c 74 20 74 6f 20 4e 55 4c 4c  t result to NULL
0800: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
0810: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0820: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
0830: 65 74 4e 75 6c 6c 28 29 0d 0a 20 20 20 20 20 20  etNull()..      
0840: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0850: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
0860: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
0870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
0880: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
0890: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
08a0: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
08b0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
08c0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
08d0: 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f  _result_null(pCo
08e0: 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20  ntext);..       
08f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0950: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0960: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
0970: 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73   the context res
0980: 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69  ult to the speci
0990: 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
09a0: 44 6f 75 62 6c 65 22 20 2f 3e 0d 0a 20 20 20 20  Double" />..    
09b0: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
09c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
09d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
09e0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
09f0: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0a00: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0a10: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
0a20: 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20  value to use... 
0a30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
0a40: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
0a50: 6c 69 63 20 76 6f 69 64 20 53 65 74 44 6f 75 62  lic void SetDoub
0a60: 6c 65 28 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  le(double value)
0a70: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0a80: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0a90: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0aa0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0ab0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
0ac0: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
0ad0: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
0ae0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0af0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
0b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
0b10: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
0b20: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
0b30: 64 6f 75 62 6c 65 28 70 43 6f 6e 74 65 78 74 2c  double(pContext,
0b40: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66 20   value);..#elif 
0b50: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
0b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
0b70: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
0b80: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
0b90: 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
0ba0: 70 43 6f 6e 74 65 78 74 2c 20 72 65 66 20 76 61  pContext, ref va
0bb0: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
0bc0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0bd0: 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
0be0: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
0bf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
0c00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
0c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
0c60: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0c70: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
0c80: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
0c90: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
0ca0: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 49  ied <see cref="I
0cb0: 6e 74 33 32 22 20 2f 3e 0d 0a 20 20 20 20 20 20  nt32" />..      
0cc0: 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20    /// value...  
0cd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0ce0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0cf0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
0d00: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
0d10: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
0d20: 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
0d30: 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  ue to use...    
0d40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0d50: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
0d60: 20 76 6f 69 64 20 53 65 74 49 6e 74 28 69 6e 74   void SetInt(int
0d70: 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20   value)..       
0d80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0d90: 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20  if (pContext == 
0da0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
0dc0: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
0dd0: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
0de0: 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n();....        
0df0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
0e00: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
0e10: 72 65 73 75 6c 74 5f 69 6e 74 28 70 43 6f 6e 74  result_int(pCont
0e20: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
0e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
0e40: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
0e90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0ea0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
0eb0: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
0ec0: 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20  t result to the 
0ed0: 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
0ee0: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 0d 0a  ref="Int64" />..
0ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
0f00: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
0f10: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0f20: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
0f30: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
0f40: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
0f50: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
0f60: 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e  /> value to use.
0f70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
0f80: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
0f90: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 49  public void SetI
0fa0: 6e 74 36 34 28 6c 6f 6e 67 20 76 61 6c 75 65 29  nt64(long value)
0fb0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0fc0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0fd0: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0fe0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0ff0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1000: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1010: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1020: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1030: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1050: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1060: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1070: 69 6e 74 36 34 28 70 43 6f 6e 74 65 78 74 2c 20  int64(pContext, 
1080: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21  value);..#elif !
1090: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
10a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
10b0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10c0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
10d0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 43  int64_interop(pC
10e0: 6f 6e 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75  ontext, ref valu
10f0: 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
1100: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
1110: 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
1120: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
1130: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1140: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
11a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11b0: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
11c0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
11d0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
11e0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  d <see cref="Str
11f0: 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ing" />..       
1200: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1210: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1220: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1230: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1240: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1250: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1260: 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76 61 6c  ="String" /> val
1270: 75 65 20 74 6f 20 75 73 65 2e 20 20 54 68 69 73  ue to use.  This
1280: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 0d 0a   value will be..
1290: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76          /// conv
12a0: 65 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46  erted to the UTF
12b0: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f  -8 encoding prio
12c0: 72 20 74 6f 20 62 65 69 6e 67 20 75 73 65 64 2e  r to being used.
12d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12e0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
12f0: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 53  public void SetS
1300: 74 72 69 6e 67 28 73 74 72 69 6e 67 20 76 61 6c  tring(string val
1310: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1320: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1330: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1340: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1350: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1360: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1370: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1380: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1390: 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 53  byte[] bytes = S
13a0: 51 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55  QLiteString.GetU
13b0: 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69  tf8BytesFromStri
13c0: 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng(value);....  
13d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
13e0: 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
13f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1400: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
1410: 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76  NullException("v
1420: 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue");....     
1430: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1440: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1450: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 0d  e3_result_text(.
1460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1470: 20 70 43 6f 6e 74 65 78 74 2c 20 62 79 74 65 73   pContext, bytes
1480: 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 2c 20  , bytes.Length, 
1490: 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b 0d 0a  (IntPtr)(-1));..
14a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14b0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1500: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1510: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1520: 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74  // Sets the cont
1530: 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68  ext result to th
1540: 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  e specified <see
1550: 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f   cref="String" /
1560: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  >..        /// v
1570: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1580: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
1590: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
15c0: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
15d0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
15e0: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20  e cref="String" 
15f0: 2f 3e 20 76 61 6c 75 65 20 63 6f 6e 74 61 69 6e  /> value contain
1600: 69 6e 67 20 74 68 65 20 65 72 72 6f 72 20 6d 65  ing the error me
1610: 73 73 61 67 65 20 74 65 78 74 2e 0d 0a 20 20 20  ssage text...   
1620: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
1630: 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76  lue will be conv
1640: 65 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46  erted to the UTF
1650: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f  -8 encoding prio
1660: 72 20 74 6f 20 62 65 69 6e 67 0d 0a 20 20 20 20  r to being..    
1670: 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
1680: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1690: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
16a0: 6c 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f  lic void SetErro
16b0: 72 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  r(string value).
16c0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
16d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
16e0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
16f0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1700: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1710: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1720: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1730: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1740: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
1750: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
1760: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
1770: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1780: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1790: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
17a0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
17b0: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
17c0: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
17d0: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
17e0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
17f0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1800: 65 73 75 6c 74 5f 65 72 72 6f 72 28 0d 0a 20 20  esult_error(..  
1810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
1820: 6f 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62  ontext, bytes, b
1830: 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20  ytes.Length);.. 
1840: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1850: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18c0: 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65  / Sets the conte
18d0: 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65  xt result to the
18e0: 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20   specified <see 
18f0: 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
1900: 72 43 6f 64 65 22 20 2f 3e 0d 0a 20 20 20 20 20  rCode" />..     
1910: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
1920: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1930: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1940: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1950: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1960: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1970: 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43  ef="SQLiteErrorC
1980: 6f 64 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ode" /> value to
1990: 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
19a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19b0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
19c0: 20 53 65 74 45 72 72 6f 72 43 6f 64 65 28 53 51   SetErrorCode(SQ
19d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61  LiteErrorCode va
19e0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
19f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1a00: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
1a10: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1a20: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
1a30: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
1a40: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
1a50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1a60: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1a70: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
1a80: 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 70  ult_error_code(p
1a90: 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b  Context, value);
1aa0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ab0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1b10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1b20: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1b30: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1b40: 63 6f 6e 74 61 69 6e 20 74 68 65 20 65 72 72 6f  contain the erro
1b50: 72 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 54 4f  r code SQLITE_TO
1b60: 4f 42 49 47 2e 0d 0a 20 20 20 20 20 20 20 20 2f  OBIG...        /
1b70: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
1b90: 69 64 20 53 65 74 45 72 72 6f 72 54 6f 6f 42 69  id SetErrorTooBi
1ba0: 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1bc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1bd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1be0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1bf0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1c00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1c10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1c30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
1c40: 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28  lt_error_toobig(
1c50: 70 43 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20  pContext);..    
1c60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1cd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1ce0: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1cf0: 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74 61 69  result to contai
1d00: 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65  n the error code
1d10: 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a   SQLITE_NOMEM...
1d20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d40: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 45  public void SetE
1d50: 72 72 6f 72 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a  rrorNoMemory()..
1d60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d70: 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74         if (pCont
1d80: 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ext == IntPtr.Ze
1d90: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1da0: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
1db0: 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
1dc0: 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  xception();.... 
1dd0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
1de0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
1df0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
1e00: 72 6f 72 5f 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65  ror_nomem(pConte
1e10: 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  xt);..        }.
1e20: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1e80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e90: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
1ea0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
1eb0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
1ec0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74  d <see cref="Byt
1ed0: 65 22 20 2f 3e 20 61 72 72 61 79 0d 0a 20 20 20  e" /> array..   
1ee0: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
1ef0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1f00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f10: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f20: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
1f30: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1f40: 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61  cref="Byte" /> a
1f50: 72 72 61 79 20 76 61 6c 75 65 20 74 6f 20 75 73  rray value to us
1f60: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1f70: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f80: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65    public void Se
1f90: 74 42 6c 6f 62 28 62 79 74 65 5b 5d 20 76 61 6c  tBlob(byte[] val
1fa0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1fc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1fd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1fe0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1ff0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
2000: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
2010: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2020: 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
2030: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2040: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
2050: 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
2060: 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d  ion("value");...
2070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
2080: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2090: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
20a0: 62 6c 6f 62 28 0d 0a 20 20 20 20 20 20 20 20 20  blob(..         
20b0: 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78 74 2c         pContext,
20c0: 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 2e 4c 65   value, value.Le
20d0: 6e 67 74 68 2c 20 28 49 6e 74 50 74 72 29 28 2d  ngth, (IntPtr)(-
20e0: 31 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  1));..        }.
20f0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
2150: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2160: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
2170: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
2180: 20 74 6f 20 61 20 42 4c 4f 42 20 6f 66 20 7a 65   to a BLOB of ze
2190: 72 6f 73 20 6f 66 20 74 68 65 20 73 70 65 63 69  ros of the speci
21a0: 66 69 65 64 20 73 69 7a 65 2e 0d 0a 20 20 20 20  fied size...    
21b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
21c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
21d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
21e0: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
21f0: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
2200: 7a 65 72 6f 20 62 79 74 65 73 20 74 6f 20 75 73  zero bytes to us
2210: 65 20 66 6f 72 20 74 68 65 20 42 4c 4f 42 20 63  e for the BLOB c
2220: 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 2e 0d 0a  ontext result...
2230: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2240: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
2250: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 5a 65 72  blic void SetZer
2260: 6f 42 6c 6f 62 28 69 6e 74 20 76 61 6c 75 65 29  oBlob(int value)
2270: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2280: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
2290: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
22a0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
22b0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
22c0: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
22d0: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
22e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
22f0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2300: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
2310: 7a 65 72 6f 62 6c 6f 62 28 70 43 6f 6e 74 65 78  zeroblob(pContex
2320: 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  t, value);..    
2330: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2340: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2390: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
23a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
23b0: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
23c0: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
23d0: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
23e0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
23f0: 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  />...        ///
2400: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2410: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2420: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
2430: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
2440: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2450: 56 61 6c 75 65 22 20 2f 3e 20 74 6f 20 75 73 65  Value" /> to use
2460: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2470: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2480: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
2490: 56 61 6c 75 65 28 53 51 4c 69 74 65 56 61 6c 75  Value(SQLiteValu
24a0: 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  e value)..      
24b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24c0: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
24d0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
24f0: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
2500: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
2510: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
2520: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
2530: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2540: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2550: 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
2560: 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65 22  xception("value"
2570: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2580: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2590: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65  thods.sqlite3_re
25a0: 73 75 6c 74 5f 76 61 6c 75 65 28 0d 0a 20 20 20  sult_value(..   
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
25c0: 6e 74 65 78 74 2c 20 76 61 6c 75 65 2e 4e 61 74  ntext, value.Nat
25d0: 69 76 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  iveHandle);..   
25e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25f0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
2600: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
2610: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
2670: 69 6f 6e 20 53 51 4c 69 74 65 56 61 6c 75 65 20  ion SQLiteValue 
2680: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
2690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
26a0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
26b0: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61  ass represents a
26c0: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
26d0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
26e0: 61 72 79 20 74 68 61 74 20 63 61 6e 20 62 65 0d  ary that can be.
26f0: 0a 20 20 20 20 2f 2f 2f 20 70 61 73 73 65 64 20  .    /// passed 
2700: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
2710: 61 6c 75 65 5f 2a 28 29 20 61 6e 64 20 61 73 73  alue_*() and ass
2720: 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e  ociated function
2730: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
2740: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
2750: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
2760: 53 51 4c 69 74 65 56 61 6c 75 65 20 3a 20 49 53  SQLiteValue : IS
2770: 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
2780: 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
2790: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
27a0: 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  e Data..        
27b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
27c0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
27d0: 61 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64  ative value hand
27e0: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
27f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2800: 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74       private Int
2810: 50 74 72 20 70 56 61 6c 75 65 3b 0d 0a 20 20 20  Ptr pValue;..   
2820: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2830: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2890: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
28a0: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
28b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
28d0: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
28e0: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
28f0: 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70  ass using the sp
2900: 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a  ecified native..
2910: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
2920: 65 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20  e handle...     
2930: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2940: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2950: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
2960: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
2970: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 76 61 6c  / The native val
2980: 75 65 20 68 61 6e 64 6c 65 20 74 6f 20 75 73 65  ue handle to use
2990: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
29a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29b0: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
29c0: 61 6c 75 65 28 49 6e 74 50 74 72 20 70 56 61 6c  alue(IntPtr pVal
29d0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
29e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
29f0: 2e 70 56 61 6c 75 65 20 3d 20 70 56 61 6c 75 65  .pValue = pValue
2a00: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2a10: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2a80: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
2a90: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2aa0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2ab0: 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e 76 61 6c         /// Inval
2ac0: 69 64 61 74 65 73 20 74 68 65 20 6e 61 74 69 76  idates the nativ
2ad0: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2c 20  e value handle, 
2ae0: 74 68 65 72 65 62 79 20 70 72 65 76 65 6e 74 69  thereby preventi
2af0: 6e 67 20 66 75 72 74 68 65 72 0d 0a 20 20 20 20  ng further..    
2b00: 20 20 20 20 2f 2f 2f 20 61 63 63 65 73 73 20 74      /// access t
2b10: 6f 20 69 74 20 66 72 6f 6d 20 74 68 69 73 20 6f  o it from this o
2b20: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
2b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2b40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b50: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 50 72   private void Pr
2b60: 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73  eventNativeAcces
2b70: 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
2b80: 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61 6c              pVal
2b90: 75 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ue = IntPtr.Zero
2ba0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2bb0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2bc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2c20: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
2c30: 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72 20 4d  Marshal Helper M
2c40: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2c50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c60: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
2c70: 72 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72  rts a logical ar
2c80: 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 70 6f  ray of native po
2c90: 69 6e 74 65 72 73 20 74 6f 20 6e 61 74 69 76 65  inters to native
2ca0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a   sqlite3_value..
2cb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2cc0: 63 74 75 72 65 73 20 69 6e 74 6f 20 61 20 6d 61  ctures into a ma
2cd0: 6e 61 67 65 64 20 61 72 72 61 79 20 6f 66 20 3c  naged array of <
2ce0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2cf0: 56 61 6c 75 65 22 20 2f 3e 0d 0a 20 20 20 20 20  Value" />..     
2d00: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
2d10: 73 74 61 6e 63 65 73 2e 0d 0a 20 20 20 20 20 20  stances...      
2d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2d30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2d40: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
2d50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2d60: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65  he number of ele
2d70: 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67  ments in the log
2d80: 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
2d90: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  tive sqlite3_val
2da0: 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
2db0: 73 74 72 75 63 74 75 72 65 73 2e 0d 0a 20 20 20  structures...   
2dc0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2dd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2de0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
2df0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2e00: 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2e10: 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69 63 61  er to the logica
2e20: 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  l array of nativ
2e30: 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d  e sqlite3_value.
2e40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
2e50: 75 63 74 75 72 65 73 20 74 6f 20 63 6f 6e 76 65  uctures to conve
2e60: 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
2e70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e80: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2e90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2ea0: 65 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79 20  e managed array 
2eb0: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
2ec0: 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
2ed0: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 6f  ject instances o
2ee0: 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  r..        /// n
2ef0: 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
2f00: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2f10: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2f20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2f30: 69 63 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d  ic SQLiteValue[]
2f40: 20 41 72 72 61 79 46 72 6f 6d 53 69 7a 65 41 6e   ArrayFromSizeAn
2f50: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
2f60: 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
2f70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2f80: 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20  Ptr argv..      
2f90: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2fa0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2fb0: 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a 20  if (argc < 0).. 
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2fd0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
2fe0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
2ff0: 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  rgv == IntPtr.Ze
3000: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
3010: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
3020: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3030: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 72   SQLiteValue[] r
3040: 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 51 4c 69  esult = new SQLi
3050: 74 65 56 61 6c 75 65 5b 61 72 67 63 5d 3b 0d 0a  teValue[argc];..
3060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
3070: 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30  r (int index = 0
3080: 2c 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20  , offset = 0;.. 
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 20 20 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c     index < resul
30b0: 74 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  t.Length;..     
30c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30d0: 6e 64 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b  ndex++, offset +
30e0: 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a  = IntPtr.Size)..
30f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
3100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
3110: 6e 74 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c  ntPtr pArg = SQL
3120: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
3130: 6e 74 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73  ntPtr(argv, offs
3140: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
3150: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69          result[i
3160: 6e 64 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d  ndex] = (pArg !=
3170: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d   IntPtr.Zero) ?.
3180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3190: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 56       new SQLiteV
31a0: 61 6c 75 65 28 70 41 72 67 29 20 3a 20 6e 75 6c  alue(pArg) : nul
31b0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
31c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31d0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
31e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
31f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
3200: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
3260: 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
3270: 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73  veHandle Members
3280: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
3290: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
32a0: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
32b0: 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69   underlying SQLi
32c0: 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65  te native handle
32d0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
32e0: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
32f0: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
3300: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
3310: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3320: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
3330: 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  tr NativeHandle.
3340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3350: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
3360: 74 75 72 6e 20 70 56 61 6c 75 65 3b 20 7d 0d 0a  turn pValue; }..
3370: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3380: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
3390: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
33a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
33f0: 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
3400: 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
3410: 72 69 76 61 74 65 20 62 6f 6f 6c 20 70 65 72 73  rivate bool pers
3420: 69 73 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  isted;..        
3430: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3440: 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
3450: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  ns non-zero if t
3460: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
3470: 20 76 61 6c 75 65 20 68 61 73 20 62 65 65 6e 20   value has been 
3480: 73 75 63 63 65 73 73 66 75 6c 6c 79 0d 0a 20 20  successfully..  
3490: 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73        /// persis
34a0: 74 65 64 20 61 73 20 61 20 6d 61 6e 61 67 65 64  ted as a managed
34b0: 20 76 61 6c 75 65 20 77 69 74 68 69 6e 20 74 68   value within th
34c0: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
34d0: 63 65 20 28 69 2e 65 2e 20 74 68 65 0d 0a 20 20  ce (i.e. the..  
34e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
34f0: 72 65 66 3d 22 56 61 6c 75 65 22 20 2f 3e 20 70  ref="Value" /> p
3500: 72 6f 70 65 72 74 79 20 6d 61 79 20 74 68 65 6e  roperty may then
3510: 20 62 65 20 72 65 61 64 20 73 75 63 63 65 73 73   be read success
3520: 66 75 6c 6c 79 29 2e 0d 0a 20 20 20 20 20 20 20  fully)...       
3530: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3540: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3550: 62 6f 6f 6c 20 50 65 72 73 69 73 74 65 64 0d 0a  bool Persisted..
3560: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3570: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
3580: 75 72 6e 20 70 65 72 73 69 73 74 65 64 3b 20 7d  urn persisted; }
3590: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
35a0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35f0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
3600: 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d  e object value;.
3610: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3620: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3630: 2f 2f 2f 20 49 66 20 74 68 65 20 6d 61 6e 61 67  /// If the manag
3640: 65 64 20 76 61 6c 75 65 20 66 6f 72 20 74 68 69  ed value for thi
3650: 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
3660: 65 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 28  e is available (
3670: 69 2e 65 2e 20 69 74 0d 0a 20 20 20 20 20 20 20  i.e. it..       
3680: 20 2f 2f 2f 20 68 61 73 20 62 65 65 6e 20 70 72   /// has been pr
3690: 65 76 69 6f 75 73 6c 79 20 70 65 72 73 69 73 74  eviously persist
36a0: 65 64 20 76 69 61 20 74 68 65 20 3c 73 65 65 20  ed via the <see 
36b0: 63 72 65 66 3d 22 50 65 72 73 69 73 74 22 20 2f  cref="Persist" /
36c0: 3e 29 20 6d 65 74 68 6f 64 2c 0d 0a 20 20 20 20  >) method,..    
36d0: 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 76 61 6c      /// that val
36e0: 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 3b 20  ue is returned; 
36f0: 6f 74 68 65 72 77 69 73 65 2c 20 61 6e 20 65 78  otherwise, an ex
3700: 63 65 70 74 69 6f 6e 20 69 73 20 74 68 72 6f 77  ception is throw
3710: 6e 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 20  n.  The..       
3720: 20 2f 2f 2f 20 72 65 74 75 72 6e 65 64 20 76 61   /// returned va
3730: 6c 75 65 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e  lue may be null.
3740: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3750: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3760: 20 20 70 75 62 6c 69 63 20 6f 62 6a 65 63 74 20    public object 
3770: 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 7b  Value..        {
3780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
3790: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
37a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37b0: 20 20 69 66 20 28 21 70 65 72 73 69 73 74 65 64    if (!persisted
37c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
37d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37e0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
37f0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
3800: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a  tionException(..
3810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3820: 20 20 20 20 20 20 20 20 22 76 61 6c 75 65 20 77          "value w
3830: 61 73 20 6e 6f 74 20 70 65 72 73 69 73 74 65 64  as not persisted
3840: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
3850: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3860: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3870: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
3880: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3890: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
38a0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
38b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
38c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
3900: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
3910: 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
3920: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3930: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
3940: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
3950: 74 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  the type affinit
3960: 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  y associated wit
3970: 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20  h this value... 
3980: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
39a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 79        /// The ty
39c0: 70 65 20 61 66 66 69 6e 69 74 79 20 61 73 73 6f  pe affinity asso
39d0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
39e0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
39f0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3a00: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3a10: 54 79 70 65 41 66 66 69 6e 69 74 79 20 47 65 74  TypeAffinity Get
3a20: 54 79 70 65 41 66 66 69 6e 69 74 79 28 29 0d 0a  TypeAffinity()..
3a30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3a40: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
3a50: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
3a60: 29 20 72 65 74 75 72 6e 20 54 79 70 65 41 66 66  ) return TypeAff
3a70: 69 6e 69 74 79 2e 4e 6f 6e 65 3b 0d 0a 20 20 20  inity.None;..   
3a80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3a90: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
3aa0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75  ods.sqlite3_valu
3ab0: 65 5f 74 79 70 65 28 70 56 61 6c 75 65 29 3b 0d  e_type(pValue);.
3ac0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
3ad0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3b20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3b40: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3b50: 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
3b60: 6f 66 20 62 79 74 65 73 20 61 73 73 6f 63 69 61  of bytes associa
3b70: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
3b80: 6c 75 65 2c 20 69 66 0d 0a 20 20 20 20 20 20 20  lue, if..       
3b90: 20 2f 2f 2f 20 69 74 20 72 65 66 65 72 73 20 74   /// it refers t
3ba0: 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  o a UTF-8 encode
3bb0: 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
3bc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3bd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
3be0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3bf0: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
3c00: 20 6f 66 20 62 79 74 65 73 20 61 73 73 6f 63 69   of bytes associ
3c10: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
3c20: 61 6c 75 65 2e 20 20 54 68 65 20 72 65 74 75 72  alue.  The retur
3c30: 6e 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ned value..     
3c40: 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 20 7a 65     /// may be ze
3c50: 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ro...        ///
3c60: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3c70: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
3c80: 47 65 74 42 79 74 65 73 28 29 0d 0a 20 20 20 20  GetBytes()..    
3c90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ca0: 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
3cb0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65   IntPtr.Zero) re
3cc0: 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
3cd0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
3ce0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
3cf0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
3d00: 74 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20  tes(pValue);..  
3d10: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3d20: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3d70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3d80: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3d90: 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e   Gets and return
3da0: 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
3db0: 22 49 6e 74 33 32 22 20 2f 3e 20 61 73 73 6f 63  "Int32" /> assoc
3dc0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
3dd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
3de0: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
3df0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3e00: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3e10: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
3e20: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
3e30: 6e 74 33 32 22 20 2f 3e 20 61 73 73 6f 63 69 61  nt32" /> associa
3e40: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
3e50: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
3e60: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
3e70: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
3e80: 20 47 65 74 49 6e 74 28 29 0d 0a 20 20 20 20 20   GetInt()..     
3e90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3ea0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
3eb0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
3ec0: 75 72 6e 20 64 65 66 61 75 6c 74 28 69 6e 74 29  urn default(int)
3ed0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
3ee0: 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
3ef0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
3f00: 33 5f 76 61 6c 75 65 5f 69 6e 74 28 70 56 61 6c  3_value_int(pVal
3f10: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3f20: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3f80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3f90: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3fa0: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
3fb0: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
3fc0: 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  /> associated wi
3fd0: 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
3fe0: 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20  this value...   
3ff0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4000: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
4010: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4020: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
4030: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
4040: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4050: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
4060: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4070: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
4080: 62 6c 69 63 20 6c 6f 6e 67 20 47 65 74 49 6e 74  blic long GetInt
4090: 36 34 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  64()..        {.
40a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
40b0: 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
40c0: 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 64  r.Zero) return d
40d0: 65 66 61 75 6c 74 28 6c 6f 6e 67 29 3b 0d 0a 0d  efault(long);...
40e0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
40f0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
4100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4110: 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65  urn UnsafeNative
4120: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
4130: 76 61 6c 75 65 5f 69 6e 74 36 34 28 70 56 61 6c  value_int64(pVal
4140: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
4150: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
4160: 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76            long v
4170: 61 6c 75 65 20 3d 20 30 3b 0d 0a 20 20 20 20 20  alue = 0;..     
4180: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
4190: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
41a0: 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69  e3_value_int64_i
41b0: 6e 74 65 72 6f 70 28 70 56 61 6c 75 65 2c 20 72  nterop(pValue, r
41c0: 65 66 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ef value);..    
41d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
41e0: 61 6c 75 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alue;..#else..  
41f0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
4200: 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
4210: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
4220: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4230: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
4240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
4290: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
42a0: 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
42b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
42c0: 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
42d0: 65 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  e" /> associated
42e0: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
42f0: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
4300: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
4310: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4320: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4330: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
4340: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
4350: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
4360: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
4370: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4380: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4390: 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
43a0: 47 65 74 44 6f 75 62 6c 65 28 29 0d 0a 20 20 20  GetDouble()..   
43b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
43c0: 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d      if (pValue =
43d0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72  = IntPtr.Zero) r
43e0: 65 74 75 72 6e 20 64 65 66 61 75 6c 74 28 64 6f  eturn default(do
43f0: 75 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  uble);....#if !P
4400: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4410: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
4420: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73        return Uns
4430: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
4440: 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64  .sqlite3_value_d
4450: 6f 75 62 6c 65 28 70 56 61 6c 75 65 29 3b 0d 0a  ouble(pValue);..
4460: 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54  #elif !SQLITE_ST
4470: 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
4480: 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65      double value
4490: 20 3d 20 30 2e 30 3b 0d 0a 20 20 20 20 20 20 20   = 0.0;..       
44a0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
44b0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
44c0: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
44d0: 74 65 72 6f 70 28 70 56 61 6c 75 65 2c 20 72 65  terop(pValue, re
44e0: 66 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  f value);..     
44f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
4500: 6c 75 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lue;..#else..   
4510: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
4520: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
4530: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23  dException();..#
4540: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
4550: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
45b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
45c0: 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61        /// Gets a
45d0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
45e0: 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67  see cref="String
45f0: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
4600: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
4610: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
4620: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
4630: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
4640: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4650: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
4660: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
4670: 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77   /> associated w
4680: 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 20  ith this value. 
4690: 20 54 68 65 20 76 61 6c 75 65 20 69 73 0d 0a 20   The value is.. 
46a0: 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65         /// conve
46b0: 72 74 65 64 20 66 72 6f 6d 20 74 68 65 20 55 54  rted from the UT
46c0: 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69  F-8 encoding pri
46d0: 6f 72 20 74 6f 20 62 65 69 6e 67 20 72 65 74 75  or to being retu
46e0: 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rned...        /
46f0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4700: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
4710: 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 28 29  ring GetString()
4720: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
4730: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4740: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4750: 72 6f 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b  ro) return null;
4760: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4770: 69 6e 74 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20  int length;..   
4780: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
4790: 70 53 74 72 69 6e 67 3b 0d 0a 0d 0a 23 69 66 20  pString;....#if 
47a0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
47b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e  .            len
47c0: 67 74 68 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  gth = UnsafeNati
47d0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
47e0: 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 70 56  3_value_bytes(pV
47f0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
4800: 20 20 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e      pString = Un
4810: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4820: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4830: 74 65 78 74 28 70 56 61 6c 75 65 29 3b 0d 0a 23  text(pValue);..#
4840: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
4850: 20 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d    length = 0;...
4860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 53 74  .            pSt
4870: 72 69 6e 67 20 3d 20 55 6e 73 61 66 65 4e 61 74  ring = UnsafeNat
4880: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
4890: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e  e3_value_text_in
48a0: 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
48b0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 2c 20          pValue, 
48c0: 72 65 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 23 65  ref length);..#e
48d0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
48e0: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
48f0: 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72  eString.StringFr
4900: 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70 53 74  omUtf8IntPtr(pSt
4910: 72 69 6e 67 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a  ring, length);..
4920: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4930: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4980: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
4990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
49a0: 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
49b0: 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65  rns the <see cre
49c0: 66 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61  f="Byte" /> arra
49d0: 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  y associated wit
49e0: 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
49f0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
4a00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4a10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4a20: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4a30: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4a40: 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61  cref="Byte" /> a
4a50: 72 72 61 79 20 61 73 73 6f 63 69 61 74 65 64 20  rray associated 
4a60: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
4a70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4a80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4a90: 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20    public byte[] 
4aa0: 47 65 74 42 6c 6f 62 28 29 0d 0a 20 20 20 20 20  GetBlob()..     
4ab0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4ac0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
4ad0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4ae0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
4af0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4b00: 53 51 4c 69 74 65 42 79 74 65 73 2e 46 72 6f 6d  SQLiteBytes.From
4b10: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
4b20: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
4b30: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4b40: 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28  ite3_value_blob(
4b50: 70 56 61 6c 75 65 29 2c 20 47 65 74 42 79 74 65  pValue), GetByte
4b60: 73 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  s());..        }
4b70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
4bd0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4be0: 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74        /// Uses t
4bf0: 68 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20  he native value 
4c00: 68 61 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e  handle to obtain
4c10: 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d   and store the m
4c20: 61 6e 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20  anaged value..  
4c30: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
4c40: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
4c50: 63 65 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20  ce, thus saving 
4c60: 69 74 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65  it for later use
4c70: 2e 20 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20  .  The type..   
4c80: 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20       /// of the 
4c90: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73  managed value is
4ca0: 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74   determined by t
4cb0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
4cc0: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
4cd0: 20 2f 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75   /// native valu
4ce0: 65 2e 20 20 49 66 20 74 68 65 20 74 79 70 65 20  e.  If the type 
4cf0: 61 66 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20  affinity is not 
4d00: 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68  recognized by th
4d10: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
4d20: 6d 65 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20  method, no work 
4d30: 69 73 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73  is done and fals
4d40: 65 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a  e is returned...
4d50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
4d60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4d70: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4d80: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
4d90: 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
4da0: 65 20 76 61 6c 75 65 20 77 61 73 20 70 65 72 73  e value was pers
4db0: 69 73 74 65 64 20 73 75 63 63 65 73 73 66 75 6c  isted successful
4dc0: 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ly...        ///
4dd0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
4de0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
4df0: 20 50 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20   Persist()..    
4e00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4e10: 20 20 20 73 77 69 74 63 68 20 28 47 65 74 54 79     switch (GetTy
4e20: 70 65 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20  peAffinity()).. 
4e30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
4e50: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
4e60: 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a  Uninitialized:..
4e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
4ea0: 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  alue = null;..  
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ec0: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
4ed0: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
4f00: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
4f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f20: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4f30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
4f40: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
4f50: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
4f60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f80: 20 20 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74    value = GetInt
4f90: 36 34 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  64();..         
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
4fb0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
4fc0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
4fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4fe0: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
4ff0: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5020: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5030: 69 74 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20  ity.Double:..   
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5060: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
5070: 65 20 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b  e = GetDouble();
5080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5090: 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e            Preven
50a0: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b  tNativeAccess();
50b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
50c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
50d0: 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72   (persisted = tr
50e0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
50f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
5100: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
5110: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54  e TypeAffinity.T
5120: 65 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ext:..          
5130: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5150: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74       value = Get
5160: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5180: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
5190: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
51c0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
51f0: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
5200: 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20  ffinity.Blob:.. 
5210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
5240: 6c 75 65 20 3d 20 47 65 74 42 79 74 65 73 28 29  lue = GetBytes()
5250: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5260: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
5270: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
5280: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5290: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
52a0: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
52b0: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
52c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
52d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
52e0: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
52f0: 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20  Null:..         
5300: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5320: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42        value = DB
5330: 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20  Null.Value;..   
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69       PreventNati
5360: 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20  veAccess();..   
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72       return (per
5390: 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d  sisted = true);.
53a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
53b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
53c0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
53d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
53e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
53f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5400: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
5410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5420: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5430: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
5440: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
5450: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
5460: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
5470: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
54c0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
54d0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
54e0: 6e 74 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e  ntOp Enumeration
54f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
5500: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
5510: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
5520: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
5530: 65 20 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74  e operators that
5540: 20 61 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a   are part of a..
5550: 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69      /// constrai
5560: 6e 74 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57  nt term in the W
5570: 48 45 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61  HERE clause of a
5580: 20 71 75 65 72 79 20 74 68 61 74 20 75 73 65 73   query that uses
5590: 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20   a virtual..    
55a0: 2f 2f 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  /// table...    
55b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
55c0: 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20      public enum 
55d0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
55e0: 72 61 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a  raintOp : byte..
55f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
5600: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5610: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
5620: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
5630: 74 68 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65  the equality ope
5640: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
5650: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5660: 20 20 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20          EqualTo 
5670: 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 2,....        
5680: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5690: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
56a0: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
56b0: 20 74 68 65 20 67 72 65 61 74 65 72 20 74 68 61   the greater tha
56c0: 6e 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  n operator...   
56d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
56e0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65  ry>..        Gre
56f0: 61 74 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d  aterThan = 4,...
5700: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5710: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5720: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
5730: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65  epresents the le
5740: 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  ss than or equal
5750: 20 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20   to operator... 
5760: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5770: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c  mary>..        L
5780: 65 73 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f  essThanOrEqualTo
5790: 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20   = 8,....       
57a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
57b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
57c0: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
57d0: 73 20 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20  s the less than 
57e0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
57f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5800: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54  >..        LessT
5810: 68 61 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20  han = 16,....   
5820: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5830: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5840: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
5850: 73 65 6e 74 73 20 74 68 65 20 67 72 65 61 74 65  sents the greate
5860: 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20  r than or equal 
5870: 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20  to operator...  
5880: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5890: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72  ary>..        Gr
58a0: 65 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c  eaterThanOrEqual
58b0: 54 6f 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20  To = 32,....    
58c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
58d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
58e0: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
58f0: 65 6e 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f  ents the MATCH o
5900: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
5910: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5920: 0d 0a 20 20 20 20 20 20 20 20 4d 61 74 63 68 20  ..        Match 
5930: 3d 20 36 34 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  = 64..    }..   
5940: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
5950: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
59a0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
59b0: 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20 45  LiteIndexFlags E
59c0: 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20  numeration..    
59d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
59e0: 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72 65     /// These are
59f0: 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76 61 6c   the allowed val
5a00: 75 65 73 20 66 6f 72 20 74 68 65 20 69 6e 64 65  ues for the inde
5a10: 78 20 66 6c 61 67 73 20 66 72 6f 6d 20 74 68 65  x flags from the
5a20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
5a30: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
5a40: 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
5a50: 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
5a60: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
5a70: 72 79 3e 0d 0a 20 20 20 20 5b 46 6c 61 67 73 28  ry>..    [Flags(
5a80: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 65  )]..    public e
5a90: 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64 65 78 46  num SQLiteIndexF
5aa0: 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lags..    {..   
5ab0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5ac0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5ad0: 4e 6f 20 73 70 65 63 69 61 6c 20 68 61 6e 64 6c  No special handl
5ae0: 69 6e 67 2e 20 20 54 68 69 73 20 69 73 20 74 68  ing.  This is th
5af0: 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20  e default...    
5b00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5b10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65  y>..        None
5b20: 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20 20 20   = 0x0,....     
5b30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5b40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5b50: 69 73 20 76 61 6c 75 65 20 69 6e 64 69 63 61 74  is value indicat
5b60: 65 73 20 74 68 61 74 20 74 68 65 20 73 63 61 6e  es that the scan
5b70: 20 6f 66 20 74 68 65 20 69 6e 64 65 78 20 77 69   of the index wi
5b80: 6c 6c 20 76 69 73 69 74 20 61 74 0d 0a 20 20 20  ll visit at..   
5b90: 20 20 20 20 20 2f 2f 2f 20 6d 6f 73 74 20 6f 6e       /// most on
5ba0: 65 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  e row...        
5bb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5bc0: 20 20 20 20 20 20 20 20 53 63 61 6e 55 6e 69 71          ScanUniq
5bd0: 75 65 20 3d 20 30 78 31 0d 0a 20 20 20 20 7d 0d  ue = 0x1..    }.
5be0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
5bf0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
5c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c40: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
5c50: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  n SQLiteIndexCon
5c60: 73 74 72 61 69 6e 74 20 48 65 6c 70 65 72 20 43  straint Helper C
5c70: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
5c80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5c90: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
5ca0: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76  esents the nativ
5cb0: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
5cc0: 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75 63  constraint struc
5cd0: 74 75 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 66 72  ture..    /// fr
5ce0: 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
5cf0: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
5d00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5d10: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
5d20: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49  ed class SQLiteI
5d30: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 0d 0a  ndexConstraint..
5d40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
5d50: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
5d60: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
5d70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5d80: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5d90: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
5da0: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
5db0: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
5dc0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
5dd0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
5de0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
5df0: 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72 65  traint structure
5e00: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5e10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5e20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5e30: 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74 22 3e  me="constraint">
5e40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5e50: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
5e60: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
5e70: 74 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 75  t structure to u
5e80: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
5e90: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5ea0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
5eb0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
5ec0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
5ed0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
5ee0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
5ef0: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  x_constraint con
5f00: 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
5f10: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
5f20: 20 20 20 20 3a 20 74 68 69 73 28 63 6f 6e 73 74      : this(const
5f30: 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 2c 20 63  raint.iColumn, c
5f40: 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 2c 20 63 6f  onstraint.op, co
5f50: 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 2c  nstraint.usable,
5f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5f70: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 2e       constraint.
5f80: 69 54 65 72 6d 4f 66 66 73 65 74 29 0d 0a 20 20  iTermOffset)..  
5f90: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5fa0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
5fb0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
5fc0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
5fd0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
5fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6030: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
6040: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
6050: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6060: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6070: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
6080: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
6090: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
60a0: 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d  specified field.
60b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
60c0: 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues...        //
60d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
60e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
60f0: 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e   name="iColumn">
6100: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6110: 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e  lumn on left-han
6120: 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74 72  d side of constr
6130: 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aint...        /
6140: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
6150: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6160: 6e 61 6d 65 3d 22 6f 70 22 3e 0d 0a 20 20 20 20  name="op">..    
6170: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61 69      /// Constrai
6180: 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73 65  nt operator (<se
6190: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
61a0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 22  dexConstraintOp"
61b0: 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f   />)...        /
61c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
61d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
61e0: 6e 61 6d 65 3d 22 75 73 61 62 6c 65 22 3e 0d 0a  name="usable">..
61f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65          /// True
6200: 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72 61   if this constra
6210: 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e 0d 0a  int is usable...
6220: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
6230: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
6240: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
6250: 54 65 72 6d 4f 66 66 73 65 74 22 3e 0d 0a 20 20  TermOffset">..  
6260: 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69        /// Used i
6270: 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65  nternally - <see
6280: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
6290: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
62a0: 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20  Index" />..     
62b0: 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67     /// should ig
62c0: 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nore...        /
62d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
62e0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
62f0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
6300: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
6310: 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20   int iColumn,.. 
6320: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
6330: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
6340: 4f 70 20 6f 70 2c 0d 0a 20 20 20 20 20 20 20 20  Op op,..        
6350: 20 20 20 20 62 79 74 65 20 75 73 61 62 6c 65 2c      byte usable,
6360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
6370: 74 20 69 54 65 72 6d 4f 66 66 73 65 74 0d 0a 20  t iTermOffset.. 
6380: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
6390: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
63a0: 20 20 20 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d       this.iColum
63b0: 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  n = iColumn;..  
63c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f            this.o
63d0: 70 20 3d 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20  p = op;..       
63e0: 20 20 20 20 20 74 68 69 73 2e 75 73 61 62 6c 65       this.usable
63f0: 20 3d 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20   = usable;..    
6400: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 54 65          this.iTe
6410: 72 6d 4f 66 66 73 65 74 20 3d 20 69 54 65 72 6d  rmOffset = iTerm
6420: 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
6430: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
6440: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
6450: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
64a0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
64b0: 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20 20 20  ic Fields..     
64c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
64d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
64e0: 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e  lumn on left-han
64f0: 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74 72  d side of constr
6500: 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aint...        /
6510: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6520: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
6530: 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20  t iColumn;....  
6540: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6590: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
65a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
65b0: 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70  // Constraint op
65c0: 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72 65  erator (<see cre
65d0: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  f="SQLiteIndexCo
65e0: 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29 2e  nstraintOp" />).
65f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6600: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6610: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
6620: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
6630: 20 6f 70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   op;....        
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
66a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75  .        /// Tru
66b0: 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72  e if this constr
66c0: 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e 0d  aint is usable..
66d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
66e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
66f0: 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
6700: 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ble;....        
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6750: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6760: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6770: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 65  .        /// Use
6780: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c  d internally - <
6790: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
67a0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
67b0: 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20  estIndex" />..  
67c0: 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
67d0: 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20   ignore...      
67e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
67f0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
6800: 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
6810: 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
6820: 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
6830: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6840: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6890: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
68a0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
68b0: 79 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  y Helper Class..
68c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
68d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
68e0: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
68f0: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
6900: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
6910: 79 20 73 74 72 75 63 74 75 72 65 20 66 72 6f 6d  y structure from
6920: 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51  ..    /// the SQ
6930: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
6940: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
6950: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
6960: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
6970: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
6980: 42 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  By..    {..     
6990: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
69a0: 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  nal Constructors
69b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
69c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
69d0: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
69e0: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
69f0: 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20  his class using 
6a00: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
6a10: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
6a20: 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  / sqlite3_index_
6a30: 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72  orderby structur
6a40: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
6a50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6a60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6a70: 61 6d 65 3d 22 6f 72 64 65 72 42 79 22 3e 0d 0a  ame="orderBy">..
6a80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
6a90: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
6aa0: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72  ndex_orderby str
6ab0: 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a  ucture to use...
6ac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
6ad0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
6ae0: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64  ternal SQLiteInd
6af0: 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20 20  exOrderBy(..    
6b00: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
6b10: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
6b20: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
6b30: 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20  y orderBy..     
6b40: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
6b50: 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 72 64        : this(ord
6b60: 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 2c 20 6f 72  erBy.iColumn, or
6b70: 64 65 72 42 79 2e 64 65 73 63 29 0d 0a 20 20 20  derBy.desc)..   
6b80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6b90: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
6ba0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  g...        }.. 
6bb0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
6bc0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
6c20: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
6c30: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
6c40: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6c50: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6c60: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
6c70: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
6c80: 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73  lass using the s
6c90: 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d 0a  pecified field..
6ca0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
6cb0: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
6cc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6cd0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6ce0: 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d  name="iColumn">.
6cf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c  .        /// Col
6d00: 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20  umn number...   
6d10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6d20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6d30: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73 63  param name="desc
6d40: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
6d50: 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20  True for DESC.  
6d60: 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d 0a  False for ASC...
6d70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
6d80: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
6d90: 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
6da0: 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20 20 20  xOrderBy(..     
6db0: 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75         int iColu
6dc0: 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn,..           
6dd0: 20 62 79 74 65 20 64 65 73 63 0d 0a 20 20 20 20   byte desc..    
6de0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
6df0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6e00: 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d    this.iColumn =
6e10: 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   iColumn;..     
6e20: 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 73 63         this.desc
6e30: 20 3d 20 64 65 73 63 3b 0d 0a 20 20 20 20 20 20   = desc;..      
6e40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
6e50: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
6e60: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6eb0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
6ec0: 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20 20  lic Fields..    
6ed0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
6ef0: 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20  olumn number... 
6f00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6f10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
6f20: 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
6f30: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6f90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6fa0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20         /// True 
6fb0: 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65  for DESC.  False
6fc0: 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20 20   for ASC...     
6fd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6fe0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
6ff0: 63 20 62 79 74 65 20 64 65 73 63 3b 0d 0a 20 20  c byte desc;..  
7000: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
7010: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
7020: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
7030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7080: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
7090: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
70a0: 73 61 67 65 20 48 65 6c 70 65 72 20 43 6c 61 73  sage Helper Clas
70b0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
70c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
70d0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
70e0: 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  nts the native s
70f0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
7100: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20  straint_usage.. 
7110: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
7120: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
7130: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
7140: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7150: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
7160: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
7170: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
7180: 74 55 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20  tUsage..    {.. 
7190: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
71a0: 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63  nternal Construc
71b0: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
71c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
71d0: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
71e0: 63 74 73 20 61 20 64 65 66 61 75 6c 74 20 69 6e  cts a default in
71f0: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
7200: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
7210: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7220: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
7230: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
7240: 72 61 69 6e 74 55 73 61 67 65 28 29 0d 0a 20 20  raintUsage()..  
7250: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7260: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
7270: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
7280: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
72e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
72f0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
7300: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
7310: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
7320: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
7330: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
7340: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  /// sqlite3_inde
7350: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
7360: 67 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ge structure... 
7370: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7380: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7390: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
73a0: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22  constraintUsage"
73b0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
73c0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
73d0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
73e0: 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74 75  nt_usage structu
73f0: 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  re to use...    
7400: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
7410: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
7420: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  al SQLiteIndexCo
7430: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a  nstraintUsage(..
7440: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
7450: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
7460: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
7470: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63  nstraint_usage c
7480: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a  onstraintUsage..
7490: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
74a0: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
74b0: 73 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  s(constraintUsag
74c0: 65 2e 61 72 67 76 49 6e 64 65 78 2c 20 63 6f 6e  e.argvIndex, con
74d0: 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69  straintUsage.omi
74e0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
74f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
7500: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
7510: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
7520: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7530: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7580: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
7590: 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f  ivate Constructo
75a0: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
75b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
75c0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
75d0: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
75e0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
75f0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
7600: 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  field..        /
7610: 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  // values...    
7620: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7630: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7640: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
7650: 76 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  vIndex">..      
7660: 20 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65 72    /// If greater
7670: 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72 61   than 0, constra
7680: 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61  int is part of a
7690: 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e 0d  rgv to xFilter..
76a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
76b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
76c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
76d0: 6f 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  omit">..        
76e0: 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20  /// Do not code 
76f0: 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20  a test for this 
7700: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
7710: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
7720: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
7730: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  te SQLiteIndexCo
7740: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a  nstraintUsage(..
7750: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
7760: 61 72 67 76 49 6e 64 65 78 2c 0d 0a 20 20 20 20  argvIndex,..    
7770: 20 20 20 20 20 20 20 20 62 79 74 65 20 6f 6d 69          byte omi
7780: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
7790: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
77a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 72           this.ar
77b0: 67 76 49 6e 64 65 78 20 3d 20 61 72 67 76 49 6e  gvIndex = argvIn
77c0: 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dex;..          
77d0: 20 20 74 68 69 73 2e 6f 6d 69 74 20 3d 20 6f 6d    this.omit = om
77e0: 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  it;..        }..
77f0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
7800: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
7810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
7860: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
7870: 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20  Fields..        
7880: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7890: 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67 72         /// If gr
78a0: 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63 6f  eater than 0, co
78b0: 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74  nstraint is part
78c0: 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c   of argv to xFil
78d0: 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
78e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
78f0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
7900: 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a 0d 0a 20   argvIndex;.... 
7910: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7960: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7970: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7980: 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65   /// Do not code
7990: 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
79a0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20   constraint...  
79b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
79c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
79d0: 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 0d  blic byte omit;.
79e0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
79f0: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
7a00: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7a10: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7a60: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
7a70: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 48  iteIndexInputs H
7a80: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
7a90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7aa0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
7ab0: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ss represents th
7ac0: 65 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73  e various inputs
7ad0: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
7ae0: 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20   SQLite core..  
7af0: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 74 6f    /// library to
7b00: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
7b10: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
7b20: 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
7b30: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
7b40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7b50: 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65      public seale
7b60: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e  d class SQLiteIn
7b70: 64 65 78 49 6e 70 75 74 73 0d 0a 20 20 20 20 7b  dexInputs..    {
7b80: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
7b90: 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74  n Internal Const
7ba0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
7bb0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7bc0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
7bd0: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
7be0: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
7bf0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7c10: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7c20: 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22  me="nConstraint"
7c30: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
7c40: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65  he number of <se
7c50: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
7c60: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f  dexConstraint" /
7c70: 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a  > instances to..
7c80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d          /// pre-
7c90: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
7ca0: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
7cb0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
7cc0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7cd0: 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a  me="nOrderBy">..
7ce0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
7cf0: 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63  number of <see c
7d00: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
7d10: 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73 74  OrderBy" /> inst
7d20: 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20  ances to..      
7d30: 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61    /// pre-alloca
7d40: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
7d50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
7d60: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
7d70: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
7d80: 78 49 6e 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e  xInputs(int nCon
7d90: 73 74 72 61 69 6e 74 2c 20 69 6e 74 20 6e 4f 72  straint, int nOr
7da0: 64 65 72 42 79 29 0d 0a 20 20 20 20 20 20 20 20  derBy)..        
7db0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
7dc0: 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 65 77  onstraints = new
7dd0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
7de0: 74 72 61 69 6e 74 5b 6e 43 6f 6e 73 74 72 61 69  traint[nConstrai
7df0: 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt];..          
7e00: 20 20 6f 72 64 65 72 42 79 73 20 3d 20 6e 65 77    orderBys = new
7e10: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
7e20: 72 42 79 5b 6e 4f 72 64 65 72 42 79 5d 3b 0d 0a  rBy[nOrderBy];..
7e30: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7e40: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7e50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ea0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
7eb0: 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
7ec0: 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
7ed0: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
7ee0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63  exConstraint[] c
7ef0: 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 20 20 20  onstraints;..   
7f00: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7f10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7f20: 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65  An array of <see
7f30: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
7f40: 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e  exConstraint" />
7f50: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
7f60: 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s,..        /// 
7f70: 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20  each containing 
7f80: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70 70  information supp
7f90: 6c 69 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  lied by the SQLi
7fa0: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
7fb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7fc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7fd0: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
7fe0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d  ndexConstraint[]
7ff0: 20 43 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20 20   Constraints..  
8000: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8010: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
8020: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 3b 20 7d  n constraints; }
8030: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
8040: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8090: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
80a0: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  e SQLiteIndexOrd
80b0: 65 72 42 79 5b 5d 20 6f 72 64 65 72 42 79 73 3b  erBy[] orderBys;
80c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
80d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
80e0: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66   /// An array of
80f0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
8100: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20  teIndexOrderBy" 
8110: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
8120: 63 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ces,..        //
8130: 2f 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e  / each containin
8140: 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75  g information su
8150: 70 70 6c 69 65 64 20 62 79 20 74 68 65 20 53 51  pplied by the SQ
8160: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
8170: 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
8180: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8190: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
81a0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
81b0: 4f 72 64 65 72 42 79 73 0d 0a 20 20 20 20 20 20  OrderBys..      
81c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
81d0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 72   get { return or
81e0: 64 65 72 42 79 73 3b 20 7d 0d 0a 20 20 20 20 20  derBys; }..     
81f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8200: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
8210: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
8220: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
8230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8270: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
8280: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74  n SQLiteIndexOut
8290: 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61 73  puts Helper Clas
82a0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
82b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
82c0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
82d0: 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20  nts the various 
82e0: 6f 75 74 70 75 74 73 20 70 72 6f 76 69 64 65 64  outputs provided
82f0: 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
8300: 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62  ore..    /// lib
8310: 72 61 72 79 20 62 79 20 74 68 65 20 3c 73 65 65  rary by the <see
8320: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
8330: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
8340: 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
8350: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
8360: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
8370: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
8380: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
8390: 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
83a0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
83b0: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
83c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
83d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
83e0: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
83f0: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
8400: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
8410: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8420: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
8430: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e  param name="nCon
8440: 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20  straint">..     
8450: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
8460: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
8470: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
8480: 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 69  raintUsage" /> i
8490: 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20  nstances..      
84a0: 20 20 2f 2f 2f 20 74 6f 20 70 72 65 2d 61 6c 6c    /// to pre-all
84b0: 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e  ocate space for.
84c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
84d0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
84e0: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
84f0: 6e 64 65 78 4f 75 74 70 75 74 73 28 69 6e 74 20  ndexOutputs(int 
8500: 6e 43 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20  nConstraint)..  
8510: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8520: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55       constraintU
8530: 73 61 67 65 73 20 3d 20 6e 65 77 20 53 51 4c 69  sages = new SQLi
8540: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
8550: 74 55 73 61 67 65 5b 6e 43 6f 6e 73 74 72 61 69  tUsage[nConstrai
8560: 6e 74 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt];....        
8570: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8580: 20 20 20 20 2f 2f 20 42 55 47 46 49 58 3a 20 43      // BUGFIX: C
8590: 72 65 61 74 65 20 74 68 65 20 5b 65 6d 70 74 79  reate the [empty
85a0: 5d 20 63 6f 6e 73 74 72 61 69 6e 74 20 75 73 61  ] constraint usa
85b0: 67 65 73 20 6e 6f 77 20 73 6f 20 74 68 65 79 20  ges now so they 
85c0: 63 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 20 20  can be..        
85d0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 75      //         u
85e0: 73 65 64 20 62 79 20 74 68 65 20 78 42 65 73 74  sed by the xBest
85f0: 49 6e 64 65 78 20 63 61 6c 6c 62 61 63 6b 2e 0d  Index callback..
8600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
8610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
8620: 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e   (int iConstrain
8630: 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69  t = 0; iConstrai
8640: 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74  nt < nConstraint
8650: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29  ; iConstraint++)
8660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8670: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
8680: 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20  es[iConstraint] 
8690: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
86a0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
86b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ();..        }..
86c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
86d0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8720: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
8730: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8740: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
8750: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61  rmines if the na
8760: 74 69 76 65 20 65 73 74 69 6d 61 74 65 64 52 6f  tive estimatedRo
8770: 77 73 20 66 69 65 6c 64 20 63 61 6e 20 62 65 20  ws field can be 
8780: 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e 0d 0a  used, based on..
8790: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
87a0: 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73 69 6f  available versio
87b0: 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  n of the SQLite 
87c0: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
87d0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
87e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
87f0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
8800: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
8810: 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20 63  ro if the <see c
8820: 72 65 66 3d 22 45 73 74 69 6d 61 74 65 64 52 6f  ref="EstimatedRo
8830: 77 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20  ws" /> property 
8840: 69 73 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20  is supported..  
8850: 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65        /// by the
8860: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
8870: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
8880: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
8890: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
88a0: 6f 6c 20 43 61 6e 55 73 65 45 73 74 69 6d 61 74  ol CanUseEstimat
88b0: 65 64 52 6f 77 73 28 29 0d 0a 20 20 20 20 20 20  edRows()..      
88c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
88d0: 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76   if (UnsafeNativ
88e0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
88f0: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
8900: 65 72 28 29 20 3e 3d 20 33 30 30 38 30 30 32 29  er() >= 3008002)
8910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8920: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
8930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
8940: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
8950: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8960: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
89b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
89c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
89d0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
89e0: 65 20 6e 61 74 69 76 65 20 66 6c 61 67 73 20 66  e native flags f
89f0: 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64  ield can be used
8a00: 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d 0a  , based on the..
8a10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69          /// avai
8a20: 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66  lable version of
8a30: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
8a40: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
8a50: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8a60: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
8a70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8a80: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
8a90: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
8aa0: 22 49 6e 64 65 78 46 6c 61 67 73 22 20 2f 3e 20  "IndexFlags" /> 
8ab0: 70 72 6f 70 65 72 74 79 20 69 73 20 73 75 70 70  property is supp
8ac0: 6f 72 74 65 64 20 62 79 0d 0a 20 20 20 20 20 20  orted by..      
8ad0: 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65    /// the SQLite
8ae0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
8af0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
8b00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
8b10: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55  public bool CanU
8b20: 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29 0d 0a  seIndexFlags()..
8b30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8b40: 20 20 20 20 20 20 20 69 66 20 28 55 6e 73 61 66         if (Unsaf
8b50: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
8b60: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
8b70: 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30  n_number() >= 30
8b80: 30 39 30 30 30 29 0d 0a 20 20 20 20 20 20 20 20  09000)..        
8b90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
8ba0: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
8bb0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
8bc0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
8bd0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8c20: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8c30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8c40: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
8c50: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 66   if the native f
8c60: 6c 61 67 73 20 66 69 65 6c 64 20 63 61 6e 20 62  lags field can b
8c70: 65 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e  e used, based on
8c80: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
8c90: 2f 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73  / available vers
8ca0: 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74  ion of the SQLit
8cb0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
8cc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
8cd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8ce0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
8cf0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
8d00: 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65  zero if the <see
8d10: 20 63 72 65 66 3d 22 43 6f 6c 75 6d 6e 73 55 73   cref="ColumnsUs
8d20: 65 64 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20  ed" /> property 
8d30: 69 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 0d  is supported by.
8d40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
8d50: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
8d60: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
8d70: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
8d80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
8d90: 6f 6c 20 43 61 6e 55 73 65 43 6f 6c 75 6d 6e 73  ol CanUseColumns
8da0: 55 73 65 64 28 29 0d 0a 20 20 20 20 20 20 20 20  Used()..        
8db0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
8dc0: 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f (UnsafeNativeM
8dd0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6c  ethods.sqlite3_l
8de0: 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72  ibversion_number
8df0: 28 29 20 3e 3d 20 33 30 31 30 30 30 30 29 0d 0a  () >= 3010000)..
8e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e10: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a  return true;....
8e20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8e30: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
8e40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e60: 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8ea0: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
8eb0: 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
8ec0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
8ed0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
8ee0: 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73 74  intUsage[] const
8ef0: 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 20 20  raintUsages;..  
8f00: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8f10: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8f20: 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65   An array of <se
8f30: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
8f40: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
8f50: 67 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  ge" /> object.. 
8f60: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
8f70: 6e 63 65 73 2c 20 65 61 63 68 20 63 6f 6e 74 61  nces, each conta
8f80: 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f  ining informatio
8f90: 6e 20 74 6f 20 62 65 20 73 75 70 70 6c 69 65 64  n to be supplied
8fa0: 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 0d 0a   to the SQLite..
8fb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65          /// core
8fc0: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
8fd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8fe0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
8ff0: 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  c SQLiteIndexCon
9000: 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 43  straintUsage[] C
9010: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 0d  onstraintUsages.
9020: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9030: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
9040: 74 75 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74 55  turn constraintU
9050: 73 61 67 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20  sages; }..      
9060: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
9070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
90c0: 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 69 6e    private int in
90d0: 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20  dexNumber;..    
90e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
90f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
9100: 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
9110: 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
9120: 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20  selected index. 
9130: 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c   This value will
9140: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61  ..        /// la
9150: 74 65 72 20 62 65 20 70 72 6f 76 69 64 65 64 20  ter be provided 
9160: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
9170: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
9180: 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f  Module.Filter" /
9190: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  >..        /// m
91a0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
91b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
91c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
91d0: 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a  nt IndexNumber..
91e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
91f0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
9200: 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  urn indexNumber;
9210: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9220: 73 65 74 20 7b 20 69 6e 64 65 78 4e 75 6d 62 65  set { indexNumbe
9230: 72 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  r = value; }..  
9240: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9250: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
92a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
92b0: 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
92c0: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
92d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
92e0: 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65    /// String use
92f0: 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69  d to help identi
9300: 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  fy the selected 
9310: 69 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c  index.  This val
9320: 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20  ue will..       
9330: 20 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70 72   /// later be pr
9340: 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c 73  ovided to the <s
9350: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
9360: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69  ManagedModule.Fi
9370: 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20  lter" />..      
9380: 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20    /// method... 
9390: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
93a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
93b0: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 49 6e 64  ublic string Ind
93c0: 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  exString..      
93d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
93e0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e   get { return in
93f0: 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20 20  dexString; }..  
9400: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
9410: 69 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61  indexString = va
9420: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
9430: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
9440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9480: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
9490: 70 72 69 76 61 74 65 20 69 6e 74 20 6e 65 65 64  private int need
94a0: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
94b0: 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g;..        /// 
94c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
94d0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
94e0: 69 66 20 74 68 65 20 69 6e 64 65 78 20 73 74 72  if the index str
94f0: 69 6e 67 20 6d 75 73 74 20 62 65 20 66 72 65 65  ing must be free
9500: 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  d by the SQLite 
9510: 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  core..        //
9520: 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  / library...    
9530: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9540: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
9550: 69 63 20 69 6e 74 20 4e 65 65 64 54 6f 46 72 65  ic int NeedToFre
9560: 65 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20  eIndexString..  
9570: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9580: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
9590: 6e 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  n needToFreeInde
95a0: 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20  xString; }..    
95b0: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 65          set { ne
95c0: 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72  edToFreeIndexStr
95d0: 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ing = value; }..
95e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
95f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9640: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
9650: 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  int orderByConsu
9660: 6d 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  med;..        //
9670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9680: 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66       /// True if
9690: 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61   output is alrea
96a0: 64 79 20 6f 72 64 65 72 65 64 2e 0d 0a 20 20 20  dy ordered...   
96b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
96c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
96d0: 6c 69 63 20 69 6e 74 20 4f 72 64 65 72 42 79 43  lic int OrderByC
96e0: 6f 6e 73 75 6d 65 64 0d 0a 20 20 20 20 20 20 20  onsumed..       
96f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9700: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 72 64  get { return ord
9710: 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 7d 0d  erByConsumed; }.
9720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
9730: 20 7b 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d   { orderByConsum
9740: 65 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  ed = value; }.. 
9750: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9760: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
97b0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 64         private d
97c0: 6f 75 62 6c 65 3f 20 65 73 74 69 6d 61 74 65 64  ouble? estimated
97d0: 43 6f 73 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f  Cost;..        /
97e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
97f0: 20 20 20 20 20 20 2f 2f 2f 20 45 73 74 69 6d 61        /// Estima
9800: 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e  ted cost of usin
9810: 67 20 74 68 69 73 20 69 6e 64 65 78 2e 20 20 55  g this index.  U
9820: 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75  sing a null valu
9830: 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20 20  e here..        
9840: 2f 2f 2f 20 69 6e 64 69 63 61 74 65 73 20 74 68  /// indicates th
9850: 61 74 20 61 20 64 65 66 61 75 6c 74 20 65 73 74  at a default est
9860: 69 6d 61 74 65 64 20 63 6f 73 74 20 76 61 6c 75  imated cost valu
9870: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
9880: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
9890: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
98a0: 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65     public double
98b0: 3f 20 45 73 74 69 6d 61 74 65 64 43 6f 73 74 0d  ? EstimatedCost.
98c0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
98d0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
98e0: 74 75 72 6e 20 65 73 74 69 6d 61 74 65 64 43 6f  turn estimatedCo
98f0: 73 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  st; }..         
9900: 20 20 20 73 65 74 20 7b 20 65 73 74 69 6d 61 74     set { estimat
9910: 65 64 43 6f 73 74 20 3d 20 76 61 6c 75 65 3b 20  edCost = value; 
9920: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
9930: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9980: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
9990: 74 65 20 6c 6f 6e 67 3f 20 65 73 74 69 6d 61 74  te long? estimat
99a0: 65 64 52 6f 77 73 3b 0d 0a 20 20 20 20 20 20 20  edRows;..       
99b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
99c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 73 74 69          /// Esti
99d0: 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  mated number of 
99e0: 72 6f 77 73 20 72 65 74 75 72 6e 65 64 2e 20 20  rows returned.  
99f0: 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c  Using a null val
9a00: 75 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20  ue here..       
9a10: 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65 73 20 74   /// indicates t
9a20: 68 61 74 20 61 20 64 65 66 61 75 6c 74 20 65 73  hat a default es
9a30: 74 69 6d 61 74 65 64 20 72 6f 77 73 20 76 61 6c  timated rows val
9a40: 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  ue should be use
9a50: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
9a60: 54 68 69 73 20 70 72 6f 70 65 72 74 79 20 68 61  This property ha
9a70: 73 20 6e 6f 20 65 66 66 65 63 74 20 69 66 20 74  s no effect if t
9a80: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
9a90: 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61 74  ibrary is not at
9aa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65  ..        /// le
9ab0: 61 73 74 20 76 65 72 73 69 6f 6e 20 33 2e 38 2e  ast version 3.8.
9ac0: 32 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  2...        /// 
9ad0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9ae0: 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 3f      public long?
9af0: 20 45 73 74 69 6d 61 74 65 64 52 6f 77 73 0d 0a   EstimatedRows..
9b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9b10: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
9b20: 75 72 6e 20 65 73 74 69 6d 61 74 65 64 52 6f 77  urn estimatedRow
9b30: 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  s; }..          
9b40: 20 20 73 65 74 20 7b 20 65 73 74 69 6d 61 74 65    set { estimate
9b50: 64 52 6f 77 73 20 3d 20 76 61 6c 75 65 3b 20 7d  dRows = value; }
9b60: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
9b70: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
9b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9bc0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
9bd0: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61  e SQLiteIndexFla
9be0: 67 73 3f 20 69 6e 64 65 78 46 6c 61 67 73 3b 0d  gs? indexFlags;.
9bf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
9c00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9c10: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 74 68  /// The flags th
9c20: 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  at should be use
9c30: 64 20 77 69 74 68 20 74 68 69 73 20 69 6e 64 65  d with this inde
9c40: 78 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c  x.  Using a null
9c50: 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
9c60: 2f 2f 2f 20 68 65 72 65 20 69 6e 64 69 63 61 74  /// here indicat
9c70: 65 73 20 74 68 61 74 20 61 20 64 65 66 61 75 6c  es that a defaul
9c80: 74 20 66 6c 61 67 73 20 76 61 6c 75 65 20 73 68  t flags value sh
9c90: 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 20 20 54  ould be used.  T
9ca0: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
9cb0: 20 70 72 6f 70 65 72 74 79 20 68 61 73 20 6e 6f   property has no
9cc0: 20 65 66 66 65 63 74 20 69 66 20 74 68 65 20 53   effect if the S
9cd0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
9ce0: 72 79 20 69 73 20 6e 6f 74 20 61 74 20 6c 65 61  ry is not at lea
9cf0: 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  st..        /// 
9d00: 76 65 72 73 69 6f 6e 20 33 2e 39 2e 30 2e 0d 0a  version 3.9.0...
9d10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
9d20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9d30: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
9d40: 65 78 46 6c 61 67 73 3f 20 49 6e 64 65 78 46 6c  exFlags? IndexFl
9d50: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ags..        {..
9d60: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
9d70: 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 46 6c  { return indexFl
9d80: 61 67 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ags; }..        
9d90: 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65 78 46      set { indexF
9da0: 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  lags = value; }.
9db0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9dc0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9e10: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
9e20: 20 6c 6f 6e 67 3f 20 63 6f 6c 75 6d 6e 73 55 73   long? columnsUs
9e30: 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed;..        ///
9e40: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9e50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
9e60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e 64 69          /// Indi
9e70: 63 61 74 65 73 20 77 68 69 63 68 20 63 6f 6c 75  cates which colu
9e80: 6d 6e 73 20 6f 66 20 74 68 65 20 76 69 72 74 75  mns of the virtu
9e90: 61 6c 20 74 61 62 6c 65 20 6d 61 79 20 62 65 20  al table may be 
9ea0: 72 65 71 75 69 72 65 64 20 62 79 20 74 68 65 0d  required by the.
9eb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72  .        /// cur
9ec0: 72 65 6e 74 20 73 63 61 6e 2e 20 20 56 69 72 74  rent scan.  Virt
9ed0: 75 61 6c 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e  ual table column
9ee0: 73 20 61 72 65 20 6e 75 6d 62 65 72 65 64 20 66  s are numbered f
9ef0: 72 6f 6d 20 7a 65 72 6f 20 69 6e 20 74 68 65 0d  rom zero in the.
9f00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 64  .        /// ord
9f10: 65 72 20 69 6e 20 77 68 69 63 68 20 74 68 65 79  er in which they
9f20: 20 61 70 70 65 61 72 20 77 69 74 68 69 6e 20 74   appear within t
9f30: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  he CREATE TABLE 
9f40: 73 74 61 74 65 6d 65 6e 74 20 70 61 73 73 65 64  statement passed
9f50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f  ..        /// to
9f60: 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65   sqlite3_declare
9f70: 5f 76 74 61 62 28 29 2e 20 20 46 6f 72 20 74 68  _vtab().  For th
9f80: 65 20 66 69 72 73 74 20 36 33 20 63 6f 6c 75 6d  e first 63 colum
9f90: 6e 73 20 28 63 6f 6c 75 6d 6e 73 20 30 2d 36 32  ns (columns 0-62
9fa0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ),..        /// 
9fb0: 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  the correspondin
9fc0: 67 20 62 69 74 20 69 73 20 73 65 74 20 77 69 74  g bit is set wit
9fd0: 68 69 6e 20 74 68 65 20 62 69 74 20 6d 61 73 6b  hin the bit mask
9fe0: 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d   if the column m
9ff0: 61 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ay..        /// 
a000: 62 65 20 72 65 71 75 69 72 65 64 20 62 79 20 53  be required by S
a010: 51 4c 69 74 65 2e 20 20 49 66 20 74 68 65 20 74  QLite.  If the t
a020: 61 62 6c 65 20 68 61 73 20 61 74 20 6c 65 61 73  able has at leas
a030: 74 20 36 34 20 63 6f 6c 75 6d 6e 73 20 61 6e 64  t 64 columns and
a040: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ..        /// an
a050: 79 20 63 6f 6c 75 6d 6e 20 74 6f 20 74 68 65 20  y column to the 
a060: 72 69 67 68 74 20 6f 66 20 74 68 65 20 66 69 72  right of the fir
a070: 73 74 20 36 33 20 69 73 20 72 65 71 75 69 72 65  st 63 is require
a080: 64 2c 20 74 68 65 6e 20 62 69 74 20 36 33 20 6f  d, then bit 63 o
a090: 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  f..        /// c
a0a0: 6f 6c 55 73 65 64 20 69 73 20 61 6c 73 6f 20 73  olUsed is also s
a0b0: 65 74 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f  et.  In other wo
a0c0: 72 64 73 2c 20 63 6f 6c 75 6d 6e 20 69 43 6f 6c  rds, column iCol
a0d0: 20 6d 61 79 20 62 65 20 72 65 71 75 69 72 65 64   may be required
a0e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66  ..        /// if
a0f0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0d   the expression.
a100: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
a110: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
a120: 2f 20 3c 70 61 72 61 3e 3c 63 6f 64 65 3e 0d 0a  / <para><code>..
a130: 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 63 6f 6c          /// (col
a140: 55 73 65 64 20 26 61 6d 70 3b 20 28 28 73 71 6c  Used &amp; ((sql
a150: 69 74 65 33 5f 75 69 6e 74 36 34 29 31 20 26 6c  ite3_uint64)1 &l
a160: 74 3b 26 6c 74 3b 20 28 69 43 6f 6c 26 67 74 3b  t;&lt; (iCol&gt;
a170: 3d 36 33 20 3f 20 36 33 20 3a 20 69 43 6f 6c 29  =63 ? 63 : iCol)
a180: 29 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ))..        /// 
a190: 3c 2f 63 6f 64 65 3e 3c 2f 70 61 72 61 3e 0d 0a  </code></para>..
a1a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
a1b0: 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
a1c0: 65 76 61 6c 75 61 74 65 73 20 74 6f 20 6e 6f 6e  evaluates to non
a1d0: 2d 7a 65 72 6f 2e 20 20 55 73 69 6e 67 20 61 20  -zero.  Using a 
a1e0: 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72 65 20  null value here 
a1f0: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61  indicates that a
a200: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
a210: 66 61 75 6c 74 20 66 6c 61 67 73 20 76 61 6c 75  fault flags valu
a220: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
a230: 2e 20 20 54 68 69 73 20 70 72 6f 70 65 72 74 79  .  This property
a240: 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69   has no effect i
a250: 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
a260: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
a270: 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61 74  ibrary is not at
a280: 20 6c 65 61 73 74 20 76 65 72 73 69 6f 6e 20 33   least version 3
a290: 2e 31 30 2e 30 2e 0d 0a 20 20 20 20 20 20 20 20  .10.0...        
a2a0: 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
a2b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a2c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
a2d0: 6c 69 63 20 6c 6f 6e 67 3f 20 43 6f 6c 75 6d 6e  lic long? Column
a2e0: 73 55 73 65 64 0d 0a 20 20 20 20 20 20 20 20 7b  sUsed..        {
a2f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
a300: 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6c 75 6d  t { return colum
a310: 6e 73 55 73 65 64 3b 20 7d 0d 0a 20 20 20 20 20  nsUsed; }..     
a320: 20 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f 6c         set { col
a330: 75 6d 6e 73 55 73 65 64 20 3d 20 76 61 6c 75 65  umnsUsed = value
a340: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
a350: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
a360: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
a370: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a380: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a3d0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
a3e0: 74 65 49 6e 64 65 78 20 48 65 6c 70 65 72 20 43  teIndex Helper C
a3f0: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
a400: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
a410: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
a420: 65 73 65 6e 74 73 20 74 68 65 20 76 61 72 69 6f  esents the vario
a430: 75 73 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75  us inputs and ou
a440: 74 70 75 74 73 20 75 73 65 64 20 77 69 74 68 20  tputs used with 
a450: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  the..    /// <se
a460: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
a470: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
a480: 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
a490: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
a4a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
a4b0: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
a4c0: 53 51 4c 69 74 65 49 6e 64 65 78 0d 0a 20 20 20  SQLiteIndex..   
a4d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
a4e0: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e  ion Internal Con
a4f0: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
a500: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a510: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
a520: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
a530: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
a540: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
a550: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a560: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
a570: 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e  name="nConstrain
a580: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
a590: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
a5a0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
a5b0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22  IndexConstraint"
a5c0: 20 2f 3e 20 28 61 6e 64 0d 0a 20 20 20 20 20 20   /> (and..      
a5d0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
a5e0: 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73  "SQLiteIndexCons
a5f0: 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 29  traintUsage" />)
a600: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
a610: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
a620: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
a630: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
a640: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
a650: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
a660: 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20  e="nOrderBy">.. 
a670: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
a680: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
a690: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f  ef="SQLiteIndexO
a6a0: 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73 74 61  rderBy" /> insta
a6b0: 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20  nces to..       
a6c0: 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74   /// pre-allocat
a6d0: 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20  e space for...  
a6e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
a6f0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  m>..        inte
a700: 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78  rnal SQLiteIndex
a710: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
a720: 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 0d  nt nConstraint,.
a730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
a740: 20 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 20   nOrderBy..     
a750: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
a760: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a770: 20 69 6e 70 75 74 73 20 3d 20 6e 65 77 20 53 51   inputs = new SQ
a780: 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 28  LiteIndexInputs(
a790: 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 6e 4f 72  nConstraint, nOr
a7a0: 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20  derBy);..       
a7b0: 20 20 20 20 20 6f 75 74 70 75 74 73 20 3d 20 6e       outputs = n
a7c0: 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  ew SQLiteIndexOu
a7d0: 74 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e  tputs(nConstrain
a7e0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
a7f0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
a800: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
a810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a850: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a860: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
a870: 20 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72 20   Marshal Helper 
a880: 4d 65 74 68 6f 64 73 20 28 46 6f 72 20 54 65 73  Methods (For Tes
a890: 74 20 55 73 65 20 4f 6e 6c 79 29 0d 0a 20 20 20  t Use Only)..   
a8a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a8b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
a8c0: 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  Attempts to dete
a8d0: 72 6d 69 6e 65 20 74 68 65 20 73 74 72 75 63 74  rmine the struct
a8e0: 75 72 65 20 73 69 7a 65 73 20 6e 65 65 64 65 64  ure sizes needed
a8f0: 20 74 6f 20 63 72 65 61 74 65 20 61 6e 64 0d 0a   to create and..
a900: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 70 75          /// popu
a910: 6c 61 74 65 20 61 20 6e 61 74 69 76 65 0d 0a 20  late a native.. 
a920: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
a930: 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
a940: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
a950: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e  3_index_info" />
a960: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
a970: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
a980: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
a9a0: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
a9b0: 66 49 6e 66 6f 54 79 70 65 22 3e 0d 0a 20 20 20  fInfoType">..   
a9c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
a9d0: 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
a9e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
a9f0: 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
aa00: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
aa10: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20  te3_index_info" 
aa20: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
aa30: 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74 6f  structure is sto
aa40: 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20 20  red here...     
aa50: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
aa60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
aa70: 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f 66  ram name="sizeOf
aa80: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 22 3e  ConstraintType">
aa90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
aaa0: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61  e size of the na
aab0: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
aac0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73  / <see cref="Uns
aad0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
aae0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
aaf0: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 0d 0a 20  onstraint" />.. 
ab00: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
ab10: 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20 68  ture is stored h
ab20: 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ere...        //
ab30: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
ab40: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
ab50: 61 6d 65 3d 22 73 69 7a 65 4f 66 4f 72 64 65 72  ame="sizeOfOrder
ab60: 42 79 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20  ByType">..      
ab70: 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f    /// The size o
ab80: 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  f the native..  
ab90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
aba0: 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76  ref="UnsafeNativ
abb0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
abc0: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 22 20  _index_orderby" 
abd0: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
abe0: 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74 6f  structure is sto
abf0: 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20 20  red here...     
ac00: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
ac10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
ac20: 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f 66  ram name="sizeOf
ac30: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54  ConstraintUsageT
ac40: 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ype">..        /
ac50: 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74  // The size of t
ac60: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
ac70: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
ac80: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
ac90: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
aca0: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
acb0: 73 61 67 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  sage" />..      
acc0: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
acd0: 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d  is stored here..
ace0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
acf0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
ad00: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
ad10: 69 64 20 53 69 7a 65 4f 66 28 0d 0a 20 20 20 20  id SizeOf(..    
ad20: 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20          out int 
ad30: 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 2c 0d  sizeOfInfoType,.
ad40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74  .            out
ad50: 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74   int sizeOfConst
ad60: 72 61 69 6e 74 54 79 70 65 2c 0d 0a 20 20 20 20  raintType,..    
ad70: 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20          out int 
ad80: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
ad90: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
ada0: 6f 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f  out int sizeOfCo
adb0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
adc0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
add0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
ade0: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 49           sizeOfI
adf0: 6e 66 6f 54 79 70 65 20 3d 20 4d 61 72 73 68 61  nfoType = Marsha
ae00: 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
ae10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae20: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
ae30: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
ae40: 64 65 78 5f 69 6e 66 6f 29 29 3b 0d 0a 0d 0a 20  dex_info));.... 
ae50: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f             sizeO
ae60: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20  fConstraintType 
ae70: 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
ae80: 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20  (typeof(..      
ae90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
aea0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
aeb0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
aec0: 74 72 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  traint));....   
aed0: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f           sizeOfO
aee0: 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72  rderByType = Mar
aef0: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
af00: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
af10: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
af20: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
af30: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 29  _index_orderby))
af40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
af50: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
af60: 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72  tUsageType = Mar
af70: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
af80: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
af90: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
afa0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
afb0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
afc0: 74 5f 75 73 61 67 65 29 29 3b 0d 0a 20 20 20 20  t_usage));..    
afd0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
afe0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
aff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b030: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
b040: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
b050: 74 74 65 6d 70 74 73 20 74 6f 20 61 6c 6c 6f 63  ttempts to alloc
b060: 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69  ate and initiali
b070: 7a 65 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20  ze a native..   
b080: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
b090: 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
b0a0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
b0b0: 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a  index_info" />..
b0c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
b0d0: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
b0e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b0f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b100: 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72  am name="nConstr
b110: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
b120: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
b130: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
b140: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
b150: 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73  nt" /> instances
b160: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
b170: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
b180: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
b190: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b1a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b1b0: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
b1c0: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
b1d0: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
b1e0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b1f0: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
b200: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
b210: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
b220: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
b230: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
b240: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b250: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
b260: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
b270: 20 6e 65 77 6c 79 20 61 6c 6c 6f 63 61 74 65 64   newly allocated
b280: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
b290: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b2a0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
b2b0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
b2c0: 78 5f 69 6e 66 6f 22 20 2f 3e 20 73 74 72 75 63  x_info" /> struc
b2d0: 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
b2e0: 2f 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66  / -OR- <see cref
b2f0: 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
b300: 3e 20 69 66 20 69 74 20 63 6f 75 6c 64 20 6e 6f  > if it could no
b310: 74 20 62 65 20 66 75 6c 6c 79 20 61 6c 6c 6f 63  t be fully alloc
b320: 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
b330: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
b340: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
b350: 74 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c  tatic IntPtr All
b360: 6f 63 61 74 65 41 6e 64 49 6e 69 74 69 61 6c 69  ocateAndInitiali
b370: 7a 65 4e 61 74 69 76 65 28 0d 0a 20 20 20 20 20  zeNative(..     
b380: 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73         int nCons
b390: 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20  traint,..       
b3a0: 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42       int nOrderB
b3b0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
b3c0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
b3d0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
b3e0: 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74 72 2e  pIndex = IntPtr.
b3f0: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
b400: 20 20 20 49 6e 74 50 74 72 20 70 49 6e 66 6f 20     IntPtr pInfo 
b410: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
b420: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
b430: 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d  tr pConstraint =
b440: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
b450: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
b460: 72 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e 74  r pOrderBy = Int
b470: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
b480: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
b490: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
b4a0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
b4b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
b4c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b4d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b4e0: 20 69 6e 74 20 73 69 7a 65 4f 66 49 6e 66 6f 54   int sizeOfInfoT
b4f0: 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
b500: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
b510: 4f 72 64 65 72 42 79 54 79 70 65 3b 0d 0a 20 20  OrderByType;..  
b520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
b530: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
b540: 6e 74 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20  ntType;..       
b550: 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
b560: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
b570: 67 65 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  geType;....     
b580: 20 20 20 20 20 20 20 20 20 20 20 53 69 7a 65 4f             SizeO
b590: 66 28 6f 75 74 20 73 69 7a 65 4f 66 49 6e 66 6f  f(out sizeOfInfo
b5a0: 54 79 70 65 2c 20 6f 75 74 20 73 69 7a 65 4f 66  Type, out sizeOf
b5b0: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 2c 0d  ConstraintType,.
b5c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b5d0: 20 20 20 20 20 6f 75 74 20 73 69 7a 65 4f 66 4f       out sizeOfO
b5e0: 72 64 65 72 42 79 54 79 70 65 2c 20 6f 75 74 20  rderByType, out 
b5f0: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b600: 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20  UsageType);.... 
b610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b620: 66 20 28 28 73 69 7a 65 4f 66 49 6e 66 6f 54 79  f ((sizeOfInfoTy
b630: 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20  pe > 0) &&..    
b640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b650: 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e  (sizeOfConstrain
b660: 74 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20  tType > 0) &&.. 
b670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b680: 20 20 20 28 73 69 7a 65 4f 66 4f 72 64 65 72 42     (sizeOfOrderB
b690: 79 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20  yType > 0) &&.. 
b6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6b0: 20 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72     (sizeOfConstr
b6c0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 20 3e 20  aintUsageType > 
b6d0: 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0))..           
b6e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b6f0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66              pInf
b700: 6f 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  o = SQLiteMemory
b710: 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 4f 66  .Allocate(sizeOf
b720: 49 6e 66 6f 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  InfoType);....  
b730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b740: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20    pConstraint = 
b750: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c  SQLiteMemory.All
b760: 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  ocate(..        
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b790: 54 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72 61 69  Type * nConstrai
b7a0: 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt);....        
b7b0: 20 20 20 20 20 20 20 20 20 20 20 20 70 4f 72 64              pOrd
b7c0: 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 65 6d  erBy = SQLiteMem
b7d0: 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20  ory.Allocate(.. 
b7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7f0: 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f 72 64         sizeOfOrd
b800: 65 72 42 79 54 79 70 65 20 2a 20 6e 4f 72 64 65  erByType * nOrde
b810: 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rBy);....       
b820: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
b830: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
b840: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c  SQLiteMemory.All
b850: 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  ocate(..        
b860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b870: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b880: 55 73 61 67 65 54 79 70 65 20 2a 20 6e 43 6f 6e  UsageType * nCon
b890: 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20  straint);....   
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8b0: 20 69 66 20 28 28 70 49 6e 66 6f 20 21 3d 20 49   if ((pInfo != I
b8c0: 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a  ntPtr.Zero) &&..
b8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8e0: 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74 72          (pConstr
b8f0: 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a  aint != IntPtr.Z
b900: 65 72 6f 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ero) &&..       
b910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b920: 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20 49 6e   (pOrderBy != In
b930: 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20  tPtr.Zero) &&.. 
b940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b950: 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74 72 61         (pConstra
b960: 69 6e 74 55 73 61 67 65 20 21 3d 20 49 6e 74 50  intUsage != IntP
b970: 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20  tr.Zero))..     
b980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
b990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b9a0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
b9b0: 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  fset = 0;....   
b9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9d0: 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
b9e0: 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 0d 0a  al.WriteInt32(..
b9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba00: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66              pInf
ba10: 6f 2c 20 6f 66 66 73 65 74 2c 20 6e 43 6f 6e 73  o, offset, nCons
ba20: 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20  traint);....    
ba30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba40: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
ba50: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
ba60: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
ba70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba80: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
ba90: 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74  zeof(int), IntPt
baa0: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bac0: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
bad0: 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a  l.WriteIntPtr(..
bae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66              pInf
bb00: 6f 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f 6e 73  o, offset, pCons
bb10: 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20  traint);....    
bb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb30: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
bb40: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
bb50: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
bb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb70: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
bb80: 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f  tPtr.Size, sizeo
bb90: 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
bba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbb0: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
bbc0: 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20  l.WriteInt32(.. 
bbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbe0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f             pInfo
bbf0: 2c 20 6f 66 66 73 65 74 2c 20 6e 4f 72 64 65 72  , offset, nOrder
bc00: 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  By);....        
bc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc20: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
bc30: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
bc40: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
bc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc60: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
bc70: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
bc80: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bca0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
bcb0: 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  iteIntPtr(..    
bcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcd0: 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f          pInfo, o
bce0: 66 66 73 65 74 2c 20 70 4f 72 64 65 72 42 79 29  ffset, pOrderBy)
bcf0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
bd10: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
bd20: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
bd30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
bd50: 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
bd60: 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  ze, IntPtr.Size)
bd70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
bd90: 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
bda0: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
bdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdc0: 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73       pInfo, offs
bdd0: 65 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e 74 55  et, pConstraintU
bde0: 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sage);....      
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be00: 20 20 70 49 6e 64 65 78 20 3d 20 70 49 6e 66 6f    pIndex = pInfo
be10: 3b 20 2f 2a 20 4e 4f 54 45 3a 20 53 75 63 63 65  ; /* NOTE: Succe
be20: 73 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ss. */..        
be30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
be40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
be50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
be60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
be70: 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
be80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
be90: 20 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20       if (pIndex 
bea0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  == IntPtr.Zero) 
beb0: 2f 2a 20 4e 4f 54 45 3a 20 46 61 69 6c 75 72 65  /* NOTE: Failure
bec0: 3f 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ? */..          
bed0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
bef0: 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  (pConstraintUsag
bf00: 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
bf10: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
bf20: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bf30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf40: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
bf50: 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 55  ree(pConstraintU
bf60: 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  sage);..        
bf70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf80: 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
bf90: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
bfa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bfb0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
bfd0: 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20 49 6e   (pOrderBy != In
bfe0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c000: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c010: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
c020: 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 72  eMemory.Free(pOr
c030: 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20  derBy);..       
c040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c050: 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e 74 50   pOrderBy = IntP
c060: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
c070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c080: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c090: 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 73         if (pCons
c0a0: 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72  traint != IntPtr
c0b0: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0e0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
c0f0: 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72  ory.Free(pConstr
c100: 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  aint);..        
c110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c120: 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e  pConstraint = In
c130: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
c160: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e           if (pIn
c170: 66 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  fo != IntPtr.Zer
c180: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
c190: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1b0: 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
c1c0: 46 72 65 65 28 70 49 6e 66 6f 29 3b 0d 0a 20 20  Free(pInfo);..  
c1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1e0: 20 20 20 20 20 20 70 49 6e 66 6f 20 3d 20 49 6e        pInfo = In
c1f0: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
c200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c210: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
c220: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c230: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
c240: 20 20 20 72 65 74 75 72 6e 20 70 49 6e 64 65 78     return pIndex
c250: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
c260: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
c270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
c2b0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c2c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c2d0: 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 6c 6c 20    /// Frees all 
c2e0: 74 68 65 20 6d 65 6d 6f 72 79 20 61 73 73 6f 63  the memory assoc
c2f0: 69 61 74 65 64 20 77 69 74 68 20 61 20 6e 61 74  iated with a nat
c300: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
c310: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
c320: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
c330: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
c340: 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  fo" />..        
c350: 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
c360: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
c370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
c380: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
c390: 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  "pIndex">..     
c3a0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
c3b0: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
c3c0: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
c3d0: 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
c3e0: 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20  ture to..       
c3f0: 20 2f 2f 2f 20 66 72 65 65 2e 0d 0a 20 20 20 20   /// free...    
c400: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
c410: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
c420: 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 46 72  e static void Fr
c430: 65 65 4e 61 74 69 76 65 28 0d 0a 20 20 20 20 20  eeNative(..     
c440: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
c450: 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
c460: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
c470: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c480: 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72  pIndex == IntPtr
c490: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
c4a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
c4b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
c4c0: 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a  nt offset = 0;..
c4d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
c4e0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
c4f0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
c500: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
c510: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
c520: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
c530: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
c540: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
c550: 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74  nstraint = SQLit
c560: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
c570: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
c580: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
c590: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
c5a0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c5b0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c5c0: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c5e0: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
c5f0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
c600: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
c610: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
c620: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
c630: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
c640: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
c650: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
c660: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
c670: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72        IntPtr pOr
c680: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61  derBy = SQLiteMa
c690: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
c6a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c6b0: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
c6c0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
c6d0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
c6e0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
c6f0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
c700: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
c710: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e   IntPtr.Size, In
c720: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
c730: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
c740: 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r pConstraintUsa
c750: 67 65 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  ge = SQLiteMarsh
c760: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  al.ReadIntPtr(..
c770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c780: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
c790: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c7a0: 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55  if (pConstraintU
c7b0: 73 61 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  sage != IntPtr.Z
c7c0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
c7d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c7e0: 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
c7f0: 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69  y.Free(pConstrai
c800: 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20  ntUsage);..     
c810: 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73             pCons
c820: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e  traintUsage = In
c830: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
c840: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c850: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4f 72           if (pOr
c860: 64 65 72 42 79 20 21 3d 20 49 6e 74 50 74 72 2e  derBy != IntPtr.
c870: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
c880: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c890: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
c8a0: 72 79 2e 46 72 65 65 28 70 4f 72 64 65 72 42 79  ry.Free(pOrderBy
c8b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c8c0: 20 20 20 20 70 4f 72 64 65 72 42 79 20 3d 20 49      pOrderBy = I
c8d0: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
c8e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
c8f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
c900: 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 49 6e 74  onstraint != Int
c910: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
c920: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c930: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
c940: 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e  Memory.Free(pCon
c950: 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20  straint);..     
c960: 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73             pCons
c970: 74 72 61 69 6e 74 20 3d 20 49 6e 74 50 74 72 2e  traint = IntPtr.
c980: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c990: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c9a0: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 21      if (pIndex !
c9b0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
c9c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c9e0: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
c9f0: 28 70 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20  (pIndex);..     
ca00: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
ca10: 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  x = IntPtr.Zero;
ca20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ca30: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
ca40: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ca50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ca60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
caa0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
cab0: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61  gion Internal Ma
cac0: 72 73 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74  rshal Helper Met
cad0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
cae0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
caf0: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
cb00: 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  s a native point
cb10: 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73  er to a native s
cb20: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
cb30: 6f 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  o structure..   
cb40: 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20       /// into a 
cb50: 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 53  new <see cref="S
cb60: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
cb70: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
cb80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
cb90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
cba0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
cbb0: 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20  ="pIndex">..    
cbc0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
cbd0: 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
cbe0: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
cbf0: 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75  _index_info stru
cc00: 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20  cture to..      
cc10: 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 2e 0d 0a    /// convert...
cc20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
cc30: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
cc40: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
cc50: 6e 63 6c 75 64 65 4f 75 74 70 75 74 22 3e 0d 0a  ncludeOutput">..
cc60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
cc70: 7a 65 72 6f 20 74 6f 20 69 6e 63 6c 75 64 65 20  zero to include 
cc80: 66 69 65 6c 64 73 20 66 72 6f 6d 20 74 68 65 20  fields from the 
cc90: 6f 75 74 70 75 74 73 20 70 6f 72 74 69 6f 6e 20  outputs portion 
cca0: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  of the native.. 
ccb0: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
ccc0: 74 75 72 65 3b 20 6f 74 68 65 72 77 69 73 65 2c  ture; otherwise,
ccd0: 20 74 68 65 20 22 6f 75 74 70 75 74 22 20 66 69   the "output" fi
cce0: 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65  elds will not be
ccf0: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20   read...        
cd00: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
cd10: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
cd20: 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a   name="index">..
cd30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
cd40: 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
cd50: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
cd60: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
cd70: 74 61 69 6e 20 74 68 65 20 6e 65 77 6c 79 0d 0a  tain the newly..
cd80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61          /// crea
cd90: 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ted <see cref="S
cda0: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
cdb0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
cdc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
cdd0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
cde0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
cdf0: 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d  oid FromIntPtr(.
ce00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
ce10: 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20  Ptr pIndex,..   
ce20: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e           bool in
ce30: 63 6c 75 64 65 4f 75 74 70 75 74 2c 0d 0a 20 20  cludeOutput,..  
ce40: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
ce50: 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d  LiteIndex index.
ce60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
ce70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ce80: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
ce90: 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x == IntPtr.Zero
cea0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ceb0: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
cec0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
ced0: 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  fset = 0;....   
cee0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f           int nCo
cef0: 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74  nstraint = SQLit
cf00: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
cf10: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
cf20: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
cf30: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
cf40: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
cf50: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
cf60: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
cf70: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
cf80: 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
cf90: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
cfa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
cfb0: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20  Ptr pConstraint 
cfc0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
cfd0: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
cfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
cff0: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
d000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
d010: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
d020: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
d030: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d040: 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
d050: 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69  r.Size, sizeof(i
d060: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
d070: 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42       int nOrderB
d080: 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  y = SQLiteMarsha
d090: 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20  l.ReadInt32(..  
d0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
d0b0: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
d0c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
d0d0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
d0e0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d0f0: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d100: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
d110: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
d120: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d130: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72        IntPtr pOr
d140: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61  derBy = SQLiteMa
d150: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
d160: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d170: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
d180: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
d190: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
d1a0: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74  raintUsage = Int
d1b0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
d1c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63           if (inc
d1d0: 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a 20 20 20  ludeOutput)..   
d1e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d200: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
d210: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
d220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d230: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
d240: 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74  tPtr.Size, IntPt
d250: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
d260: 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e              pCon
d270: 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53  straintUsage = S
d280: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
d290: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
d2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
d2b0: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
d2c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
d2d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64  .            ind
d2e0: 65 78 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  ex = new SQLiteI
d2f0: 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e 74  ndex(nConstraint
d300: 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20  , nOrderBy);..  
d310: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
d320: 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75  IndexInputs inpu
d330: 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74  ts = index.Input
d340: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
d350: 20 20 69 66 20 28 69 6e 70 75 74 73 20 3d 3d 20    if (inputs == 
d360: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
d370: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
d380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
d390: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
d3a0: 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74  int[] constraint
d3b0: 73 20 3d 20 69 6e 70 75 74 73 2e 43 6f 6e 73 74  s = inputs.Const
d3c0: 72 61 69 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  raints;....     
d3d0: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74         if (const
d3e0: 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  raints == null).
d3f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d400: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
d410: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
d420: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64  dexOrderBy[] ord
d430: 65 72 42 79 73 20 3d 20 69 6e 70 75 74 73 2e 4f  erBys = inputs.O
d440: 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20 20  rderBys;....    
d450: 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65          if (orde
d460: 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  rBys == null).. 
d470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
d480: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
d490: 20 20 20 20 20 20 54 79 70 65 20 63 6f 6e 73 74        Type const
d4a0: 72 61 69 6e 74 54 79 70 65 20 3d 20 74 79 70 65  raintType = type
d4b0: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
d4c0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
d4d0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
d4e0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
d4f0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
d500: 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e     int sizeOfCon
d510: 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61  straintType = Ma
d520: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20  rshal.SizeOf(.. 
d530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
d540: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b 0d  onstraintType);.
d550: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
d560: 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
d570: 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
d580: 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
d590: 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
d5a0: 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
d5b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d5c0: 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65     IntPtr pOffse
d5d0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
d5e0: 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  l.IntPtrForOffse
d5f0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
d600: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
d610: 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74  int, iConstraint
d620: 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61   * sizeOfConstra
d630: 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  intType);....   
d640: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
d650: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
d660: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
d670: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72  onstraint constr
d680: 61 69 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20  aint =..        
d690: 20 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73              (Uns
d6a0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
d6b0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
d6c0: 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20  onstraint)..    
d6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6e0: 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54      Marshal.PtrT
d6f0: 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73  oStructure(pOffs
d700: 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e 74 54 79  et, constraintTy
d710: 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pe);....        
d720: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
d730: 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d  nts[iConstraint]
d740: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
d750: 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  exConstraint(.. 
d760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d770: 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d     constraint);.
d780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
d790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79  ..            Ty
d7a0: 70 65 20 6f 72 64 65 72 42 79 54 79 70 65 20 3d  pe orderByType =
d7b0: 20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20   typeof(..      
d7c0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
d7d0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
d7e0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
d7f0: 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rby);....       
d800: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f       int sizeOfO
d810: 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72  rderByType = Mar
d820: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 6f 72 64 65  shal.SizeOf(orde
d830: 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  rByType);....   
d840: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
d850: 74 20 69 4f 72 64 65 72 42 79 20 3d 20 30 3b 20  t iOrderBy = 0; 
d860: 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f 72 64 65  iOrderBy < nOrde
d870: 72 42 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b 29  rBy; iOrderBy++)
d880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d8a0: 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74 20   IntPtr pOffset 
d8b0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
d8c0: 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
d8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d8e0: 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 2c 20        pOrderBy, 
d8f0: 69 4f 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f  iOrderBy * sizeO
d900: 66 4f 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a  fOrderByType);..
d910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d920: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
d930: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
d940: 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64 65  dex_orderby orde
d950: 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  rBy =..         
d960: 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73 61             (Unsa
d970: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
d980: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
d990: 64 65 72 62 79 29 0d 0a 20 20 20 20 20 20 20 20  derby)..        
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9b0: 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74 72  Marshal.PtrToStr
d9c0: 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c 20  ucture(pOffset, 
d9d0: 6f 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d  orderByType);...
d9e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d9f0: 20 6f 72 64 65 72 42 79 73 5b 69 4f 72 64 65 72   orderBys[iOrder
da00: 42 79 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  By] = new SQLite
da10: 49 6e 64 65 78 4f 72 64 65 72 42 79 28 6f 72 64  IndexOrderBy(ord
da20: 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  erBy);..        
da30: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
da40: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
da50: 4f 75 74 70 75 74 29 0d 0a 20 20 20 20 20 20 20  Output)..       
da60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
da70: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
da80: 64 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75  dexOutputs outpu
da90: 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70 75  ts = index.Outpu
daa0: 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ts;....         
dab0: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
dac0: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
dad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dae0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
db00: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
db10: 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61  tUsage[] constra
db20: 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a 20 20 20  intUsages =..   
db30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db40: 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61   outputs.Constra
db50: 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20 20  intUsages;....  
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
db70: 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
db80: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dba0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
dbb0: 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65              Type
dbc0: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
dbd0: 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a  Type = typeof(..
dbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbf0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
dc00: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
dc10: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
dc20: 5f 75 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  _usage);....    
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
dc40: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
dc50: 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73  UsageType = Mars
dc60: 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20 20 20  hal.SizeOf(..   
dc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc80: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
dc90: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
dca0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
dcb0: 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d  nt iConstraint =
dcc0: 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20   0; iConstraint 
dcd0: 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69  < nConstraint; i
dce0: 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20  Constraint++).. 
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
dd00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dd10: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66        IntPtr pOf
dd20: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
dd30: 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66  shal.IntPtrForOf
dd40: 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  fset(..         
dd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
dd60: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c  ConstraintUsage,
dd70: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
dd80: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
dd90: 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  sageType);....  
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddb0: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
ddc0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
ddd0: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
dde0: 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
ddf0: 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20  sage =..        
de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de10: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
de20: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
de30: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
de40: 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  age)..          
de50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de60: 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53    Marshal.PtrToS
de70: 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65 74  tructure(pOffset
de80: 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  , constraintUsag
de90: 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eType);....     
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
deb0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b  onstraintUsages[
dec0: 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e  iConstraint] = n
ded0: 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ew SQLiteIndexCo
dee0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a  nstraintUsage(..
def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df00: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
df10: 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20  ntUsage);..     
df20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df40: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
df50: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
df60: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
df70: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
df80: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
df90: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
dfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfb0: 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 4e 75 6d  outputs.IndexNum
dfc0: 62 65 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  ber = SQLiteMars
dfd0: 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a  hal.ReadInt32(..
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dff0: 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73      pIndex, offs
e000: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
e010: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
e020: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
e030: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
e060: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
e070: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
e080: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
e090: 49 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 53 51  IndexString = SQ
e0a0: 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e  LiteString.Strin
e0b0: 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
e0c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e0d0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
e0e0: 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70  hal.ReadIntPtr(p
e0f0: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 29 3b  Index, offset));
e100: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e110: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
e120: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
e130: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
e140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
e150: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
e160: 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  e, sizeof(int));
e170: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e180: 20 20 20 20 6f 75 74 70 75 74 73 2e 4e 65 65 64      outputs.Need
e190: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
e1a0: 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  g = SQLiteMarsha
e1b0: 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20  l.ReadInt32(..  
e1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1d0: 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
e1e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e1f0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
e200: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
e210: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
e220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e230: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
e240: 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  nt), sizeof(int)
e250: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e260: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4f 72        outputs.Or
e270: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d 20  derByConsumed = 
e280: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
e290: 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20  adInt32(..      
e2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
e2b0: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
e2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e2d0: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
e2e0: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
e2f0: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
e300: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
e310: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
e320: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29   sizeof(double))
e330: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e340: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74       outputs.Est
e350: 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 53 51 4c  imatedCost = SQL
e360: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 44  iteMarshal.ReadD
e370: 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  ouble(..        
e380: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
e390: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3b0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
e3c0: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
e3d0: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
e3e0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
e3f0: 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  , sizeof(double)
e400: 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b  , sizeof(long));
e410: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e420: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
e430: 43 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52  CanUseEstimatedR
e440: 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
e450: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e470: 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
e480: 52 6f 77 73 20 3d 20 53 51 4c 69 74 65 4d 61 72  Rows = SQLiteMar
e490: 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d  shal.ReadInt64(.
e4a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e4b0: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
e4c0: 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20   offset);..     
e4d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
e4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4f0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
e500: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
e510: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
e520: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
e530: 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20  , sizeof(long), 
e540: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
e550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e560: 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e   if (outputs.Can
e570: 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29 29  UseIndexFlags())
e580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e590: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e5a0: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
e5b0: 2e 49 6e 64 65 78 46 6c 61 67 73 20 3d 20 28 53  .IndexFlags = (S
e5c0: 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 29  QLiteIndexFlags)
e5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e5e0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
e5f0: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33  Marshal.ReadInt3
e600: 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  2(pIndex, offset
e610: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e620: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e630: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
e640: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e650: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
e660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e670: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
e680: 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c  f(int), sizeof(l
e690: 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ong));....      
e6a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75            if (ou
e6b0: 74 70 75 74 73 2e 43 61 6e 55 73 65 43 6f 6c 75  tputs.CanUseColu
e6c0: 6d 6e 73 55 73 65 64 28 29 29 0d 0a 20 20 20 20  mnsUsed())..    
e6d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6f0: 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d     outputs.Colum
e700: 6e 73 55 73 65 64 20 3d 20 53 51 4c 69 74 65 4d  nsUsed = SQLiteM
e710: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34  arshal.ReadInt64
e720: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e730: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
e740: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20  x, offset);..   
e750: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e760: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e770: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e780: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e7d0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
e7e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
e7f0: 2f 20 50 6f 70 75 6c 61 74 65 73 20 74 68 65 20  / Populates the 
e800: 6f 75 74 70 75 74 73 20 6f 66 20 61 20 70 72 65  outputs of a pre
e810: 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76  -allocated nativ
e820: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
e830: 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  info..        //
e840: 2f 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  / structure usin
e850: 67 20 61 6e 20 65 78 69 73 74 69 6e 67 20 3c 73  g an existing <s
e860: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
e870: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 0d  ndex" /> object.
e880: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
e890: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
e8a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
e8b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
e8c0: 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
e8d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
e8e0: 65 20 65 78 69 73 74 69 6e 67 20 3c 73 65 65 20  e existing <see 
e8f0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
e900: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
e910: 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  tance containing
e920: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
e930: 65 20 6f 75 74 70 75 74 20 64 61 74 61 20 74 6f  e output data to
e940: 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
e950: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
e960: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
e970: 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a  name="pIndex">..
e980: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
e990: 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
e9a0: 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c 6f 63 61  o the pre-alloca
e9b0: 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74  ted native sqlit
e9c0: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20  e3_index_info.. 
e9d0: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
e9e0: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
e9f0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ea00: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
ea10: 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65 49 6e 70  name="includeInp
ea20: 75 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ut">..        //
ea30: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69 6e  / Non-zero to in
ea40: 63 6c 75 64 65 20 66 69 65 6c 64 73 20 66 72 6f  clude fields fro
ea50: 6d 20 74 68 65 20 69 6e 70 75 74 73 20 70 6f 72  m the inputs por
ea60: 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69  tion of the nati
ea70: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
ea80: 73 74 72 75 63 74 75 72 65 3b 20 6f 74 68 65 72  structure; other
ea90: 77 69 73 65 2c 20 74 68 65 20 22 69 6e 70 75 74  wise, the "input
eaa0: 22 20 66 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f  " fields will no
eab0: 74 20 62 65 20 77 72 69 74 74 65 6e 2e 0d 0a 20  t be written... 
eac0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
ead0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
eae0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
eaf0: 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20  d ToIntPtr(..   
eb00: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
eb10: 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20  ndex index,..   
eb20: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
eb30: 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20  pIndex,..       
eb40: 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63 6c 75 64       bool includ
eb50: 65 49 6e 70 75 74 0d 0a 20 20 20 20 20 20 20 20  eInput..        
eb60: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
eb70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
eb80: 20 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29   (index == null)
eb90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eba0: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
ebb0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
ebc0: 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70  ndexOutputs outp
ebd0: 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70  uts = index.Outp
ebe0: 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  uts;....        
ebf0: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 20      if (outputs 
ec00: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
ec10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ec20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ec30: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
ec40: 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f  traintUsage[] co
ec50: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d  nstraintUsages =
ec60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ec70: 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72    outputs.Constr
ec80: 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20  aintUsages;.... 
ec90: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
eca0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20  onstraintUsages 
ecb0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
ecc0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ecd0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ece0: 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75   SQLiteIndexInpu
ecf0: 74 73 20 69 6e 70 75 74 73 20 3d 20 6e 75 6c 6c  ts inputs = null
ed00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ;..            S
ed10: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
ed20: 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e  aint[] constrain
ed30: 74 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ts = null;..    
ed40: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
ed50: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64  dexOrderBy[] ord
ed60: 65 72 42 79 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  erBys = null;...
ed70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
ed80: 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a  (includeInput)..
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
eda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
edb0: 6e 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e  nputs = index.In
edc0: 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  puts;....       
edd0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 70           if (inp
ede0: 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  uts == null)..  
edf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee00: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
ee20: 73 74 72 61 69 6e 74 73 20 3d 20 69 6e 70 75 74  straints = input
ee30: 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a  s.Constraints;..
ee40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ee50: 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
ee60: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
ee70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee80: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
ee90: 20 20 20 20 20 20 20 20 20 20 20 6f 72 64 65 72             order
eea0: 42 79 73 20 3d 20 69 6e 70 75 74 73 2e 4f 72 64  Bys = inputs.Ord
eeb0: 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBys;....      
eec0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72            if (or
eed0: 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d  derBys == null).
eee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eef0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20       return;..  
ef00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
ef10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
ef20: 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e  Index == IntPtr.
ef30: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
ef40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
ef50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
ef60: 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d  t offset = 0;...
ef70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
ef80: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53   nConstraint = S
ef90: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
efa0: 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  dInt32(pIndex, o
efb0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
efc0: 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
efd0: 64 65 49 6e 70 75 74 20 26 26 20 28 6e 43 6f 6e  deInput && (nCon
efe0: 73 74 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74  straint != const
eff0: 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68 29 29 0d  raints.Length)).
f000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f010: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
f020: 20 20 20 20 20 20 20 20 69 66 20 28 6e 43 6f 6e          if (nCon
f030: 73 74 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74  straint != const
f040: 72 61 69 6e 74 55 73 61 67 65 73 2e 4c 65 6e 67  raintUsages.Leng
f050: 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th)..           
f060: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
f070: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
f080: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
f090: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
f0a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f0b0: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
f0c0: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
f0d0: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
f0e0: 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
f0f0: 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20  nput)..         
f100: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f110: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
f120: 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74  nstraint = SQLit
f130: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
f140: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
f150: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
f160: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
f170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
f180: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
f190: 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ntType = Marshal
f1a0: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
f1b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f1c0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
f1d0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
f1e0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
f1f0: 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
f200: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
f210: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30   iConstraint = 0
f220: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20  ; iConstraint < 
f230: 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f  nConstraint; iCo
f240: 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20  nstraint++)..   
f250: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f270: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
f280: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
f290: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
f2a0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20   constraint =.. 
f2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2c0: 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66         new Unsaf
f2d0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
f2e0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
f2f0: 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
f300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f310: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
f320: 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b  s[iConstraint]);
f330: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f340: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
f350: 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d  StructureToPtr(.
f360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f370: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
f380: 69 6e 74 2c 20 53 51 4c 69 74 65 4d 61 72 73 68  int, SQLiteMarsh
f390: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
f3a0: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
f3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
f3c0: 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73 74  nstraint, iConst
f3d0: 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f  raint * sizeOfCo
f3e0: 6e 73 74 72 61 69 6e 74 54 79 70 65 29 2c 0d 0a  nstraintType),..
f3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f400: 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d          false);.
f410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f420: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
f430: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
f440: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
f450: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
f460: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
f470: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
f480: 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
f490: 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
f4a0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72           int nOr
f4b0: 64 65 72 42 79 20 3d 20 69 6e 63 6c 75 64 65 49  derBy = includeI
f4c0: 6e 70 75 74 20 3f 0d 0a 20 20 20 20 20 20 20 20  nput ?..        
f4d0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
f4e0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
f4f0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 20  pIndex, offset) 
f500: 3a 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  : 0;....        
f510: 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
f520: 6e 70 75 74 20 26 26 20 28 6e 4f 72 64 65 72 42  nput && (nOrderB
f530: 79 20 21 3d 20 6f 72 64 65 72 42 79 73 2e 4c 65  y != orderBys.Le
f540: 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20  ngth))..        
f550: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
f560: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
f570: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
f580: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
f590: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
f5a0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
f5b0: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
f5c0: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
f5d0: 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
f5e0: 64 65 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20  deInput)..      
f5f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f600: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
f610: 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  pOrderBy = SQLit
f620: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
f630: 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  Ptr(pIndex, offs
f640: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
f650: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
f660: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20  OfOrderByType = 
f670: 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
f680: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
f690: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
f6a0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
f6b0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
f6c0: 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  derby));....    
f6d0: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
f6e0: 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20  (int iOrderBy = 
f6f0: 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f  0; iOrderBy < nO
f700: 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79  rderBy; iOrderBy
f710: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
f720: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f730: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
f740: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
f750: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
f760: 64 65 72 62 79 20 6f 72 64 65 72 42 79 20 3d 0d  derby orderBy =.
f770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f780: 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73           new Uns
f790: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
f7a0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
f7b0: 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20  rderby(..       
f7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7d0: 20 20 20 20 20 6f 72 64 65 72 42 79 73 5b 69 4f       orderBys[iO
f7e0: 72 64 65 72 42 79 5d 29 3b 0d 0a 0d 0a 20 20 20  rderBy]);....   
f7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f800: 20 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75   Marshal.Structu
f810: 72 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20  reToPtr(..      
f820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f830: 20 20 6f 72 64 65 72 42 79 2c 20 53 51 4c 69 74    orderBy, SQLit
f840: 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46  eMarshal.IntPtrF
f850: 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
f860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f870: 20 20 20 70 4f 72 64 65 72 42 79 2c 20 69 4f 72     pOrderBy, iOr
f880: 64 65 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72  derBy * sizeOfOr
f890: 64 65 72 42 79 54 79 70 65 29 2c 0d 0a 20 20 20  derByType),..   
f8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8b0: 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20       false);..  
f8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
f8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
f8f0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
f900: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
f910: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
f920: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
f930: 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e  tr.Size, IntPtr.
f940: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
f950: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
f960: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
f970: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
f980: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
f990: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
f9a0: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
f9b0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
f9c0: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
f9d0: 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68  sageType = Marsh
f9e0: 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66  al.SizeOf(typeof
f9f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
fa00: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
fa10: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
fa20: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
fa30: 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  usage));....    
fa40: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
fa50: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30   iConstraint = 0
fa60: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20  ; iConstraint < 
fa70: 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f  nConstraint; iCo
fa80: 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20  nstraint++)..   
fa90: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
fab0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
fac0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
fad0: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63  nstraint_usage c
fae0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
faf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fb00: 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65        new Unsafe
fb10: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
fb20: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
fb30: 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20  traint_usage(.. 
fb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb50: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
fb60: 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61  tUsages[iConstra
fb70: 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int]);....      
fb80: 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
fb90: 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74 72  l.StructureToPtr
fba0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
fbb0: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
fbc0: 74 55 73 61 67 65 2c 20 53 51 4c 69 74 65 4d 61  tUsage, SQLiteMa
fbd0: 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
fbe0: 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
fbf0: 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e              pCon
fc00: 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 69 43  straintUsage, iC
fc10: 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65  onstraint * size
fc20: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
fc30: 65 54 79 70 65 29 2c 0d 0a 20 20 20 20 20 20 20  eType),..       
fc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c               fal
fc50: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
fc60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
fc70: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
fc80: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
fc90: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
fca0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
fcb0: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69   IntPtr.Size, si
fcc0: 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
fcd0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
fce0: 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
fcf0: 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
fd00: 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
fd10: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64       outputs.Ind
fd20: 65 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20  exNumber);....  
fd30: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
fd40: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
fd50: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
fd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd70: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
fd80: 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
fd90: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
fda0: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
fdb0: 57 72 69 74 65 49 6e 74 50 74 72 28 70 49 6e 64  WriteIntPtr(pInd
fdc0: 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  ex, offset,..   
fdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
fde0: 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
fdf0: 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 6f  tPtrFromString(o
fe00: 75 74 70 75 74 73 2e 49 6e 64 65 78 53 74 72 69  utputs.IndexStri
fe10: 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng));....       
fe20: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
fe30: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
fe40: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
fe50: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
fe60: 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
fe70: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
fe80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
fe90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
fea0: 4e 4f 54 45 3a 20 57 65 20 6a 75 73 74 20 61 6c  NOTE: We just al
feb0: 6c 6f 63 61 74 65 64 20 74 68 65 20 49 6e 64 65  located the Inde
fec0: 78 53 74 72 69 6e 67 20 66 69 65 6c 64 3b 20 74  xString field; t
fed0: 68 65 72 65 66 6f 72 65 2c 20 77 65 0d 0a 20 20  herefore, we..  
fee0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
fef0: 20 20 20 6e 65 65 64 20 74 6f 20 73 65 74 20 6d     need to set m
ff00: 61 6b 65 20 73 75 72 65 20 74 68 65 20 4e 65 65  ake sure the Nee
ff10: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
ff20: 6e 67 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20  ng field..      
ff30: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
ff40: 73 20 6e 6f 6e 2d 7a 65 72 6f 3b 20 68 6f 77 65  s non-zero; howe
ff50: 76 65 72 2c 20 77 65 20 61 72 65 20 6e 6f 74 20  ver, we are not 
ff60: 70 69 63 6b 79 20 61 62 6f 75 74 20 74 68 65 20  picky about the 
ff70: 65 78 61 63 74 0d 0a 20 20 20 20 20 20 20 20 20  exact..         
ff80: 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 6c 75     //       valu
ff90: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
ffa0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
ffb0: 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e  int needToFreeIn
ffc0: 64 65 78 53 74 72 69 6e 67 20 3d 20 6f 75 74 70  dexString = outp
ffd0: 75 74 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e  uts.NeedToFreeIn
ffe0: 64 65 78 53 74 72 69 6e 67 20 21 3d 20 30 20 3f  dexString != 0 ?
fff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10000 20 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54 6f    outputs.NeedTo
10010 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20  FreeIndexString 
10020 3a 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  : 1;....        
10030 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
10040 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
10050 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
10060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
10070 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72  edToFreeIndexStr
10080 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ing);....       
10090 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
100a0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
100b0 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
100c0 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
100d0 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
100e0 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
100f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
10100 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
10110 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66  Int32(pIndex, of
10120 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
10130 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4f         outputs.O
10140 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b  rderByConsumed);
10150 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10160 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
10170 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
10180 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
10190 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
101a0 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f  zeof(int), sizeo
101b0 66 28 64 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20  f(double));.... 
101c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
101d0 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
101e0 43 6f 73 74 2e 48 61 73 56 61 6c 75 65 29 0d 0a  Cost.HasValue)..
101f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
10210 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
10220 74 65 44 6f 75 62 6c 65 28 70 49 6e 64 65 78 2c  teDouble(pIndex,
10230 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
10240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
10250 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43  tputs.EstimatedC
10260 6f 73 74 2e 47 65 74 56 61 6c 75 65 4f 72 44 65  ost.GetValueOrDe
10270 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20  fault());..     
10280 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10290 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
102a0 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
102b0 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
102c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
102d0 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75  fset, sizeof(dou
102e0 62 6c 65 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  ble), sizeof(lon
102f0 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g));....        
10300 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
10310 43 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52  CanUseEstimatedR
10320 6f 77 73 28 29 20 26 26 0d 0a 20 20 20 20 20 20  ows() &&..      
10330 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
10340 73 2e 45 73 74 69 6d 61 74 65 64 52 6f 77 73 2e  s.EstimatedRows.
10350 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20 20 20  HasValue)..     
10360 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10370 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
10380 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
10390 36 34 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  64(pIndex, offse
103a0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
103b0 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
103c0 45 73 74 69 6d 61 74 65 64 52 6f 77 73 2e 47 65  EstimatedRows.Ge
103d0 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28  tValueOrDefault(
103e0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
103f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10400 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
10410 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
10420 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
10430 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
10440 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20 73 69  sizeof(long), si
10450 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
10460 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
10470 75 74 70 75 74 73 2e 43 61 6e 55 73 65 49 6e 64  utputs.CanUseInd
10480 65 78 46 6c 61 67 73 28 29 20 26 26 0d 0a 20 20  exFlags() &&..  
10490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
104a0 74 70 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73  tputs.IndexFlags
104b0 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20 20  .HasValue)..    
104c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
104d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
104e0 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
104f0 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
10500 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
10510 20 20 20 20 20 20 20 20 28 69 6e 74 29 6f 75 74          (int)out
10520 70 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 2e  puts.IndexFlags.
10530 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c  GetValueOrDefaul
10540 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  t());..         
10550 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10560 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
10570 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
10580 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
10590 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
105a0 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73  , sizeof(int), s
105b0 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d  izeof(long));...
105c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
105d0 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 43  (outputs.CanUseC
105e0 6f 6c 75 6d 6e 73 55 73 65 64 28 29 20 26 26 0d  olumnsUsed() &&.
105f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10600 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73   outputs.Columns
10610 55 73 65 64 2e 48 61 73 56 61 6c 75 65 29 0d 0a  Used.HasValue)..
10620 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
10640 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
10650 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78 2c 20  teInt64(pIndex, 
10660 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20  offset,..       
10670 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
10680 70 75 74 73 2e 43 6f 6c 75 6d 6e 73 55 73 65 64  puts.ColumnsUsed
10690 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75  .GetValueOrDefau
106a0 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  lt());..        
106b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
106c0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
106d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
106e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10720 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
10730 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
10740 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
10750 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
10760 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20  LiteIndexInputs 
10770 69 6e 70 75 74 73 3b 0d 0a 20 20 20 20 20 20 20  inputs;..       
10780 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10790 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
107a0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
107b0 65 49 6e 64 65 78 49 6e 70 75 74 73 22 20 2f 3e  eIndexInputs" />
107c0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
107d0 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
107e0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 70       /// the inp
107f0 75 74 73 20 74 6f 20 74 68 65 20 3c 73 65 65 20  uts to the <see 
10800 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
10810 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
10820 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20  ndex" />..      
10830 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20    /// method... 
10840 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
10850 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
10860 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
10870 78 49 6e 70 75 74 73 20 49 6e 70 75 74 73 0d 0a  xInputs Inputs..
10880 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10890 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
108a0 75 72 6e 20 69 6e 70 75 74 73 3b 20 7d 0d 0a 20  urn inputs; }.. 
108b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
108c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
108d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10910 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
10920 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
10930 73 20 6f 75 74 70 75 74 73 3b 0d 0a 20 20 20 20  s outputs;..    
10940 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10950 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
10960 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
10970 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
10980 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
10990 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  ance containing.
109a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
109b0 20 6f 75 74 70 75 74 73 20 66 72 6f 6d 20 74 68   outputs from th
109c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
109d0 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
109e0 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
109f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
10a00 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
10a10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10a20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
10a30 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20  iteIndexOutputs 
10a40 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 20 20 20  Outputs..       
10a50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10a60 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 75 74  get { return out
10a70 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  puts; }..       
10a80 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
10a90 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
10aa0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
10ab0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
10ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b00 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
10b10 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
10b20 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20  le Base Class.. 
10b30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
10b40 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
10b50 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
10b60 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61  a managed virtua
10b70 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
10b80 74 61 74 69 6f 6e 2e 20 20 49 74 20 69 73 0d 0a  tation.  It is..
10b90 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 73 65 61 6c      /// not seal
10ba0 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65  ed and should be
10bb0 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61 73   used as the bas
10bc0 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 20  e class for any 
10bd0 75 73 65 72 2d 64 65 66 69 6e 65 64 0d 0a 20 20  user-defined..  
10be0 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
10bf0 62 6c 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c  ble classes impl
10c00 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67  emented in manag
10c10 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
10c20 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10c30 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53    public class S
10c40 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
10c50 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e :..           
10c60 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
10c70 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c  ndle, IDisposabl
10c80 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20  e /* NOT SEALED 
10c90 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  */..    {..     
10ca0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
10cb0 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
10cc0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
10cd0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
10ce0 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68 69   The index withi
10cf0 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 73  n the array of s
10d00 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20  trings provided 
10d10 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
10d20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
10d30 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
10d40 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61  ule.Create" /> a
10d50 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
10d60 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
10d70 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
10d80 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
10d90 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ods containing t
10da0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
10db0 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
10dc0 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20  le implementing 
10dd0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
10de0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
10df0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10e00 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
10e10 73 74 20 69 6e 74 20 4d 6f 64 75 6c 65 4e 61 6d  st int ModuleNam
10e20 65 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 0d 0a 20  eIndex = 0;.... 
10e30 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
10e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
10e90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
10ea0 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77   /// The index w
10eb0 69 74 68 69 6e 20 74 68 65 20 61 72 72 61 79 20  ithin the array 
10ec0 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69  of strings provi
10ed0 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
10ee0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
10ef0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
10f00 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
10f10 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  /> and..        
10f20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
10f30 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
10f40 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
10f50 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69  methods containi
10f60 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
10f70 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  /// name of the 
10f80 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e  database contain
10f90 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c  ing this virtual
10fa0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
10fb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10fc0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
10fd0 20 63 6f 6e 73 74 20 69 6e 74 20 44 61 74 61 62   const int Datab
10fe0 61 73 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 31  aseNameIndex = 1
10ff0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
11000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11040 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
11050 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11060 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
11070 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65 20  ndex within the 
11080 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
11090 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
110a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
110b0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
110c0 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72  ManagedModule.Cr
110d0 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20  eate" /> and..  
110e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
110f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
11100 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63  gedModule.Connec
11110 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f  t" /> methods co
11120 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20  ntaining the..  
11130 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f        /// name o
11140 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
11150 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
11160 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11170 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
11180 6e 73 74 20 69 6e 74 20 54 61 62 6c 65 4e 61 6d  nst int TableNam
11190 65 49 6e 64 65 78 20 3d 20 32 3b 0d 0a 20 20 20  eIndex = 2;..   
111a0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
111b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
111c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11200 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
11210 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
11220 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
11230 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
11250 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
11260 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
11270 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
11280 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11290 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
112a0 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22  name="arguments"
112b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
112c0 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61  he original arra
112d0 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
112e0 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
112f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
11300 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
11310 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
11320 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
11330 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
11340 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
11350 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
11360 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
11370 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
11380 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
11390 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
113a0 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
113b0 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
113c0 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ents..          
113d0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
113e0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
113f0 2e 61 72 67 75 6d 65 6e 74 73 20 3d 20 61 72 67  .arguments = arg
11400 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20  uments;..       
11410 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
11420 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
11430 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11470 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11480 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
11490 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
114a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
114b0 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
114c0 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ts;..        ///
114d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
114e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
114f0 69 6e 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74  inal array of st
11500 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74  rings provided t
11510 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
11520 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
11530 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
11540 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e  le.Create" /> an
11550 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  d..        /// <
11560 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
11570 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
11580 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
11590 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ds...        ///
115a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
115b0 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
115c0 75 61 6c 20 73 74 72 69 6e 67 5b 5d 20 41 72 67  ual string[] Arg
115d0 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  uments..        
115e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
115f0 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
11600 65 64 28 29 3b 20 72 65 74 75 72 6e 20 61 72 67  ed(); return arg
11610 75 6d 65 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20  uments; }..     
11620 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11670 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11680 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
116a0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f  e name of the mo
116b0 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e  dule implementin
116c0 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  g this virtual t
116d0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
116e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
116f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
11700 72 74 75 61 6c 20 73 74 72 69 6e 67 20 4d 6f 64  rtual string Mod
11710 75 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  uleName..       
11720 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11730 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
11740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11750 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
11760 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
11770 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
11780 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67   arguments = Arg
11790 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  uments;....     
117a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
117b0 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c  arguments != nul
117c0 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
117d0 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75             (argu
117e0 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 4d  ments.Length > M
117f0 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29  oduleNameIndex))
11800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11810 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11820 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11830 61 72 67 75 6d 65 6e 74 73 5b 4d 6f 64 75 6c 65  arguments[Module
11840 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20  NameIndex];..   
11850 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11870 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
11880 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11890 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
118a0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
118b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
118c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
118d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
118e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
118f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11920 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11930 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11940 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
11950 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
11960 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e  database contain
11970 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c  ing this virtual
11980 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
11990 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
119a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
119b0 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 44  virtual string D
119c0 61 74 61 62 61 73 65 4e 61 6d 65 0d 0a 20 20 20  atabaseName..   
119d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
119e0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
119f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11a00 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
11a10 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
11a20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
11a30 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d  ng[] arguments =
11a40 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20   Arguments;.... 
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
11a60 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d  f ((arguments !=
11a70 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
11a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
11a90 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68  arguments.Length
11aa0 20 3e 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49   > DatabaseNameI
11ab0 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
11ac0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
11ae0 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
11af0 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65  DatabaseNameInde
11b00 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x];..           
11b10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11b20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b50 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
11b60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11b70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11b80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
11b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
11ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11be0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
11bf0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11c00 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
11c10 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
11c20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
11c30 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11c40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
11c50 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 54 61  irtual string Ta
11c60 62 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  bleName..       
11c70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11c80 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
11c90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11ca0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
11cb0 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
11cc0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
11cd0 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67   arguments = Arg
11ce0 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  uments;....     
11cf0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
11d00 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c  arguments != nul
11d10 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
11d20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75             (argu
11d30 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54  ments.Length > T
11d40 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d  ableNameIndex)).
11d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11d60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11d70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61          return a
11d80 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61  rguments[TableNa
11d90 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20  meIndex];..     
11da0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
11dc0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
11dd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11de0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11df0 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
11e00 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11e10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11e20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11e80 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
11e90 65 49 6e 64 65 78 20 69 6e 64 65 78 3b 0d 0a 20  eIndex index;.. 
11ea0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
11eb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
11ec0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
11ed0 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e  "SQLiteIndex" />
11ee0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
11ef0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20   containing all 
11f00 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
11f10 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e   data for the in
11f20 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73  puts and outputs
11f30 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65   relating to the
11f40 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 69 6e 64   most recent ind
11f50 65 78 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ex..        /// 
11f60 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  selection...    
11f70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11f80 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
11f90 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ic virtual SQLit
11fa0 65 49 6e 64 65 78 20 49 6e 64 65 78 0d 0a 20 20  eIndex Index..  
11fb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11fc0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
11fd0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
11fe0 72 6e 20 69 6e 64 65 78 3b 20 7d 0d 0a 20 20 20  rn index; }..   
11ff0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12000 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
12010 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12060 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
12070 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
12080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12090 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
120a0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
120b0 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20  should normally 
120c0 62 65 20 75 73 65 64 20 62 79 20 74 68 65 0d 0a  be used by the..
120d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
120e0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
120f0 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
12100 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
12110 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20   in order to..  
12120 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72        /// perfor
12130 6d 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f  m index selectio
12140 6e 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63  n based on the c
12150 6f 6e 73 74 72 61 69 6e 74 73 20 70 72 6f 76 69  onstraints provi
12160 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  ded by the..    
12170 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63      /// SQLite c
12180 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
12190 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
121a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
121b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
121c0 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
121d0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
121e0 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20  f="SQLiteIndex" 
121f0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
12200 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c  ce containing al
12210 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  l the..        /
12220 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65 20  // data for the 
12230 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75  inputs and outpu
12240 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 69  ts relating to i
12250 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e 0d  ndex selection..
12260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
12270 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
12280 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
12290 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
122a0 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e  ro upon success.
122b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
122c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
122d0 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
122e0 20 62 6f 6f 6c 20 42 65 73 74 49 6e 64 65 78 28   bool BestIndex(
122f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
12300 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d  LiteIndex index.
12310 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
12320 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12330 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
12340 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
12350 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65         this.inde
12360 78 20 3d 20 69 6e 64 65 78 3b 0d 0a 0d 0a 20 20  x = index;....  
12370 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12380 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
12390 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
123a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
123f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12400 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
12410 70 74 73 20 74 6f 20 72 65 63 6f 72 64 20 74 68  pts to record th
12420 65 20 72 65 6e 61 6d 69 6e 67 20 6f 66 20 74 68  e renaming of th
12430 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
12440 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
12450 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
12460 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
12470 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
12480 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
12490 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
124a0 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
124b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
124c0 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69   name for the vi
124d0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
124e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
124f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
12500 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
12510 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
12520 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
12530 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
12540 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
12550 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62 6f  ublic virtual bo
12560 6f 6c 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  ol Rename(..    
12570 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
12580 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
12590 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
125a0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
125b0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
125c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
125d0 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c  arguments != nul
125e0 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
125f0 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74         (argument
12600 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c 65  s.Length > Table
12610 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20  NameIndex))..   
12620 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12630 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 75              argu
12640 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49  ments[TableNameI
12650 6e 64 65 78 5d 20 3d 20 6e 61 6d 65 3b 0d 0a 20  ndex] = name;.. 
12660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12670 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
12680 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
12690 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
126a0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
126b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
126c0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
126d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
126e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12710 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12720 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
12730 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
12740 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
12750 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
12760 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a   nativeHandle;..
12770 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
12780 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
12790 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 75  // Returns the u
127a0 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65  nderlying SQLite
127b0 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61   native handle a
127c0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
127d0 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
127e0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
127f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12800 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12810 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
12820 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48  l IntPtr NativeH
12830 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  andle..        {
12840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
12850 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
12860 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69  d(); return nati
12870 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20  veHandle; }..   
12880 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61           interna
12890 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61  l set { nativeHa
128a0 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ndle = value; }.
128b0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
128c0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
128d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
128e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12920 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
12930 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
12940 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
12950 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
12970 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
12980 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
12990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
129a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
129b0 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
129c0 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ose()..        {
129d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
129e0 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
129f0 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70            GC.Sup
12a00 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
12a10 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  is);..        }.
12a20 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
12a30 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
12a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
12a90 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
12aa0 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20  sable "Pattern" 
12ab0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
12ac0 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69   private bool di
12ad0 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20  sposed;..       
12ae0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12af0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f          /// Thro
12b00 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  ws an <see cref=
12b10 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45  "ObjectDisposedE
12b20 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20  xception" /> if 
12b30 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
12b40 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
12b50 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f  e has been dispo
12b60 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
12b70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12b80 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
12b90 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
12ba0 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
12bb0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
12bc0 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
12bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
12be0 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20   (disposed)..   
12bf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12c00 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
12c10 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
12c20 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
12c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c40 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
12c50 65 56 69 72 74 75 61 6c 54 61 62 6c 65 29 2e 4e  eVirtualTable).N
12c60 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
12c70 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
12c80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12c90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12ce0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12cf0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
12d00 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69   Disposes of thi
12d10 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
12d20 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
12d30 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
12d40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
12d50 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e  ame="disposing">
12d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
12d70 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d  n-zero if this m
12d80 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63  ethod is being c
12d90 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a  alled from the..
12da0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
12db0 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29   cref="Dispose()
12dc0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65  " /> method.  Ze
12dd0 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
12de0 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
12df0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  d..        /// f
12e00 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65  rom the finalize
12e10 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
12e20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
12e30 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
12e40 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65  ual void Dispose
12e50 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29  (bool disposing)
12e60 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
12e70 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69           if (!di
12e80 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
12e90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12ea0 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69          //if (di
12eb0 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
12ec0 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
12ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12ee0 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  /    ///////////
12ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
12f10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
12f20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61   // dispose mana
12f30 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
12f40 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
12f50 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
12f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12f90 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20     //}....      
12fa0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
12fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12fe0 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
12ff0 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
13000 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
13010 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
13020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13040 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13050 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74      disposed = t
13060 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
13070 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
13080 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
13090 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
130a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
130f0 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63   #region Destruc
13100 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tor..        ///
13110 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13120 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65      /// Finalize
13130 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  s this object in
13140 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
13150 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13160 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65  .        ~SQLite
13170 56 69 72 74 75 61 6c 54 61 62 6c 65 28 29 0d 0a  VirtualTable()..
13180 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13190 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66         Dispose(f
131a0 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
131b0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
131c0 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
131d0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
131e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
131f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13230 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
13240 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
13250 65 43 75 72 73 6f 72 20 42 61 73 65 20 43 6c 61  eCursor Base Cla
13260 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
13270 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
13280 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
13290 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76  ents a managed v
132a0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
132b0 73 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  sor implementati
132c0 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20  on...    /// It 
132d0 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e  is not sealed an
132e0 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  d should be used
132f0 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c 61   as the base cla
13300 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20  ss for any..    
13310 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69 6e 65 64  /// user-defined
13320 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
13330 75 72 73 6f 72 20 63 6c 61 73 73 65 73 20 69 6d  ursor classes im
13340 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e  plemented in man
13350 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20  aged code...    
13360 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13370 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73      public class
13380 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
13390 62 6c 65 43 75 72 73 6f 72 20 3a 0d 0a 20 20 20  bleCursor :..   
133a0 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
133b0 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44  NativeHandle, ID
133c0 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54  isposable /* NOT
133d0 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20   SEALED */..    
133e0 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
133f0 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 43 6f 6e  on Protected Con
13400 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  stants..        
13410 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13420 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
13430 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
13440 20 61 6e 20 69 6e 76 61 6c 69 64 20 69 6e 74 65   an invalid inte
13450 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
13460 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
13470 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13480 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
13490 74 65 64 20 73 74 61 74 69 63 20 72 65 61 64 6f  ted static reado
134a0 6e 6c 79 20 69 6e 74 20 49 6e 76 61 6c 69 64 52  nly int InvalidR
134b0 6f 77 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20  owIndex = 0;..  
134c0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
134d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
134e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13520 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
13530 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
13540 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ata..        ///
13550 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13560 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 65 6c      /// The fiel
13570 64 20 68 6f 6c 64 73 20 74 68 65 20 69 6e 74 65  d holds the inte
13580 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
13590 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   number for the 
135a0 63 75 72 72 65 6e 74 20 72 6f 77 0d 0a 20 20 20  current row..   
135b0 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 64       /// pointed
135c0 20 74 6f 20 62 79 20 74 68 69 73 20 63 75 72 73   to by this curs
135d0 6f 72 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  or object instan
135e0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
135f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13600 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74       private int
13610 20 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20   rowIndex;..    
13620 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
13630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13680 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
13690 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73  gion Public Cons
136a0 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
136b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
136c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
136d0 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
136e0 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
136f0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
13700 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13710 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
13720 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
13730 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
13740 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
13750 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
13760 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
13770 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
13780 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
13790 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
137a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
137b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
137c0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56    public SQLiteV
137d0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
137e0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
137f0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
13800 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  le table..      
13810 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
13820 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
13830 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13840 20 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65        this.table
13850 20 3d 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20   = table;..     
13860 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
13870 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
13880 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
138d0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
138e0 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74  rivate Construct
138f0 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
13900 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13910 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
13920 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
13930 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
13940 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
13950 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
13960 72 69 76 61 74 65 20 53 51 4c 69 74 65 56 69 72  rivate SQLiteVir
13970 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28  tualTableCursor(
13980 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
13990 20 20 20 20 20 20 20 20 20 20 72 6f 77 49 6e 64            rowInd
139a0 65 78 20 3d 20 49 6e 76 61 6c 69 64 52 6f 77 49  ex = InvalidRowI
139b0 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ndex;..        }
139c0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
139d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
139e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
13a30 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
13a40 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
13a50 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
13a60 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
13a70 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20   table;..       
13a80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
13aa0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
13ab0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
13ac0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
13ad0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
13ae0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
13af0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
13b00 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
13b10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13b20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
13b30 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75  tual SQLiteVirtu
13b40 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 0d 0a 20  alTable Table.. 
13b50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13b60 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
13b70 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
13b80 75 72 6e 20 74 61 62 6c 65 3b 20 7d 0d 0a 20 20  urn table; }..  
13b90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13ba0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13bf0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
13c00 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a  t indexNumber;..
13c10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13c20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13c30 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74  // Number used t
13c40 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
13c50 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
13c60 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ex.  This value 
13c70 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
13c80 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68 65  / be set via the
13c90 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74   <see cref="Filt
13ca0 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
13cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
13cc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13cd0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69  public virtual i
13ce0 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a  nt IndexNumber..
13cf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13d00 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
13d10 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
13d20 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72  turn indexNumber
13d30 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
13d40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d90 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
13da0 76 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65  vate string inde
13db0 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  xString;..      
13dc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13dd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72  .        /// Str
13de0 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ing used to help
13df0 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
13e00 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54  lected index.  T
13e10 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a  his value will..
13e20 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 73          /// be s
13e30 65 74 20 76 69 61 20 74 68 65 20 3c 73 65 65 20  et via the <see 
13e40 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e  cref="Filter" />
13e50 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
13e60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13e70 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
13e80 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20   virtual string 
13e90 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20  IndexString..   
13ea0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13eb0 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
13ec0 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
13ed0 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d  n indexString; }
13ee0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
13ef0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
13f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13f40 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
13f50 65 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20  e SQLiteValue[] 
13f60 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20  values;..       
13f70 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
13f90 76 61 6c 75 65 73 20 75 73 65 64 20 74 6f 20 66  values used to f
13fa0 69 6c 74 65 72 20 74 68 65 20 72 6f 77 73 20 72  ilter the rows r
13fb0 65 74 75 72 6e 65 64 20 76 69 61 20 74 68 69 73  eturned via this
13fc0 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 0d 0a   cursor object..
13fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
13fe0 61 6e 63 65 2e 20 20 54 68 69 73 20 76 61 6c 75  ance.  This valu
13ff0 65 20 77 69 6c 6c 20 62 65 20 73 65 74 20 76 69  e will be set vi
14000 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  a the <see cref=
14010 22 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20  "Filter" />..   
14020 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
14030 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14040 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14050 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
14060 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 56   SQLiteValue[] V
14070 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20 7b  alues..        {
14080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
14090 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
140a0 64 28 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75  d(); return valu
140b0 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  es; }..        }
140c0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
140d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
140e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14120 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14130 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65     #region Prote
14140 63 74 65 64 20 4d 65 74 68 6f 64 73 0d 0a 20 20  cted Methods..  
14150 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
14160 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
14170 20 41 74 74 65 6d 70 74 73 20 74 6f 20 70 65 72   Attempts to per
14180 73 69 73 74 20 74 68 65 20 73 70 65 63 69 66 69  sist the specifi
14190 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ed <see cref="SQ
141a0 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
141b0 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
141c0 2f 20 69 6e 73 74 61 6e 63 65 73 20 69 6e 20 6f  / instances in o
141d0 72 64 65 72 20 74 6f 20 6d 61 6b 65 20 74 68 65  rder to make the
141e0 6d 20 61 76 61 69 6c 61 62 6c 65 20 61 66 74 65  m available afte
141f0 72 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  r the..        /
14200 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
14210 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
14220 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  le.Filter" /> me
14230 74 68 6f 64 20 72 65 74 75 72 6e 73 2e 0d 0a 20  thod returns... 
14240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
14250 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14260 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
14270 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20  values">..      
14280 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
14290 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
142a0 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
142b0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74  ject instances t
142c0 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
142d0 2f 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20 20  / persisted...  
142e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
142f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
14300 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
14310 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
14320 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
14330 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20  SQLiteValue" /> 
14340 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73  object instances
14350 20 74 68 61 74 20 77 65 72 65 0d 0a 20 20 20 20   that were..    
14360 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66      /// successf
14370 75 6c 6c 79 20 70 65 72 73 69 73 74 65 64 2e 0d  ully persisted..
14380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
14390 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
143a0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
143b0 61 6c 20 69 6e 74 20 54 72 79 50 65 72 73 69 73  al int TryPersis
143c0 74 56 61 6c 75 65 73 28 0d 0a 20 20 20 20 20 20  tValues(..      
143d0 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
143e0 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  e[] values..    
143f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
14400 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14410 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30    int result = 0
14420 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
14430 20 69 66 20 28 76 61 6c 75 65 73 20 21 3d 20 6e   if (values != n
14440 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14450 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14460 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 53 51       foreach (SQ
14470 4c 69 74 65 56 61 6c 75 65 20 76 61 6c 75 65 20  LiteValue value 
14480 69 6e 20 76 61 6c 75 65 73 29 0d 0a 20 20 20 20  in values)..    
14490 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
144a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144b0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
144c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
144d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
144e0 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
144f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14500 69 66 20 28 76 61 6c 75 65 2e 50 65 72 73 69 73  if (value.Persis
14510 74 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  t())..          
14520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14530 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  sult++;..       
14540 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
14550 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14560 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14570 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
14580 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
14590 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
145a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
145f0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
14600 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  lic Methods..   
14610 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
14620 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
14630 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68 6f 75  This method shou
14640 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 75  ld normally be u
14650 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  sed by the..    
14660 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
14670 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
14680 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20  dModule.Filter" 
14690 2f 3e 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64  /> method in ord
146a0 65 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  er to..        /
146b0 2f 2f 20 70 65 72 66 6f 72 6d 20 66 69 6c 74 65  // perform filte
146c0 72 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75  ring of the resu
146d0 6c 74 20 72 6f 77 73 20 61 6e 64 2f 6f 72 20 74  lt rows and/or t
146e0 6f 20 72 65 63 6f 72 64 20 74 68 65 20 66 69 6c  o record the fil
146f0 74 65 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  tering..        
14700 2f 2f 2f 20 63 72 69 74 65 72 69 61 20 70 72 6f  /// criteria pro
14710 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c  vided by the SQL
14720 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
14730 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14740 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14750 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
14760 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22  me="indexNumber"
14770 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
14780 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
14790 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
147a0 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
147b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
147c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
147d0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
147e0 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20  indexString">.. 
147f0 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e         /// Strin
14800 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  g used to help i
14810 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
14820 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
14830 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
14840 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
14850 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
14860 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
14870 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72  / The values cor
14880 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61  responding to ea
14890 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65  ch column in the
148a0 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
148b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
148c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
148d0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76  public virtual v
148e0 6f 69 64 20 46 69 6c 74 65 72 28 0d 0a 20 20 20  oid Filter(..   
148f0 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64           int ind
14900 65 78 4e 75 6d 62 65 72 2c 0d 0a 20 20 20 20 20  exNumber,..     
14910 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e         string in
14920 64 65 78 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20  dexString,..    
14930 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
14940 6c 75 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20  lue[] values..  
14950 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
14960 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14970 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
14980 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
14990 20 20 20 20 69 66 20 28 28 76 61 6c 75 65 73 20      if ((values 
149a0 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
149b0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 54 72               (Tr
149c0 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 76  yPersistValues(v
149d0 61 6c 75 65 73 29 20 21 3d 20 76 61 6c 75 65 73  alues) != values
149e0 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
149f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14a00 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
14a10 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
14a20 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
14a30 20 20 20 20 20 20 20 20 20 20 22 66 61 69 6c 65            "faile
14a40 64 20 74 6f 20 70 65 72 73 69 73 74 20 6f 6e 65  d to persist one
14a50 20 6f 72 20 6d 6f 72 65 20 76 61 6c 75 65 73 22   or more values"
14a60 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14a70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
14a80 20 74 68 69 73 2e 69 6e 64 65 78 4e 75 6d 62 65   this.indexNumbe
14a90 72 20 3d 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  r = indexNumber;
14aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
14ab0 69 73 2e 69 6e 64 65 78 53 74 72 69 6e 67 20 3d  is.indexString =
14ac0 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20   indexString;.. 
14ad0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
14ae0 76 61 6c 75 65 73 20 3d 20 76 61 6c 75 65 73 3b  values = values;
14af0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
14b00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
14b60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14b70 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
14b80 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20  the integer row 
14b90 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20  sequence number 
14ba0 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
14bb0 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  row...        //
14bc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14bd0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
14be0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
14bf0 20 54 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77   The integer row
14c00 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72   sequence number
14c10 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
14c20 20 72 6f 77 20 2d 4f 52 2d 20 7a 65 72 6f 20 69   row -OR- zero i
14c30 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  f..        /// i
14c40 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
14c50 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20  rmined...       
14c60 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
14c70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
14c80 76 69 72 74 75 61 6c 20 69 6e 74 20 47 65 74 52  virtual int GetR
14c90 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20  owIndex()..     
14ca0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14cb0 20 20 72 65 74 75 72 6e 20 72 6f 77 49 6e 64 65    return rowInde
14cc0 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  x;..        }...
14cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
14ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
14d30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
14d40 20 20 20 2f 2f 2f 20 41 64 6a 75 73 74 73 20 74     /// Adjusts t
14d50 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
14d60 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 73  equence number s
14d70 6f 20 74 68 61 74 20 69 74 20 72 65 66 65 72 73  o that it refers
14d80 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
14d90 20 2f 2f 2f 20 6e 65 78 74 20 72 6f 77 2e 0d 0a   /// next row...
14da0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
14db0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14dc0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76  public virtual v
14dd0 6f 69 64 20 4e 65 78 74 52 6f 77 49 6e 64 65 78  oid NextRowIndex
14de0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
14df0 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 49 6e             rowIn
14e00 64 65 78 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  dex++;..        
14e10 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
14e20 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14e30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e70 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14e80 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
14e90 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  iteNativeHandle 
14ea0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
14eb0 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
14ec0 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20  nativeHandle;.. 
14ed0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
14ee0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
14ef0 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e  / Returns the un
14f00 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20  derlying SQLite 
14f10 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73  native handle as
14f20 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
14f30 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
14f40 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
14f50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14f60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14f70 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
14f80 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
14f90 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
14fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
14fb0 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
14fc0 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76  (); return nativ
14fd0 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20  eHandle; }..    
14fe0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
14ff0 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e   set { nativeHan
15000 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  dle = value; }..
15010 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
15020 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
15030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
15040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
15090 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
150a0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
150b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
150c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
150d0 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
150e0 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
150f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15100 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
15110 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
15120 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  se()..        {.
15130 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
15140 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
15150 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
15160 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
15170 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
15180 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
15190 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
151a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
151f0 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
15200 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
15210 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
15220 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
15230 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
15240 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15250 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
15260 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
15270 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
15280 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74  ception" /> if t
15290 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
152a0 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
152b0 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73   has been dispos
152c0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
152d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
152e0 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
152f0 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
15300 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
15310 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48         {..#if TH
15320 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d  ROW_ON_DISPOSED.
15330 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
15340 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  (disposed)..    
15350 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15360 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
15370 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
15380 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
15390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153a0 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65     typeof(SQLite
153b0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
153c0 6f 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  or).Name);..    
153d0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
153e0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
153f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15440 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15450 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15460 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f    /// Disposes o
15470 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  f this object in
15480 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
15490 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
154a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
154b0 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73  ram name="dispos
154c0 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ing">..        /
154d0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
154e0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65  his method is be
154f0 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  ing called from 
15500 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
15510 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73 70   <see cref="Disp
15520 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64  ose()" /> method
15530 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20  .  Zero if this 
15540 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20  method is being 
15550 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20 20  called..        
15560 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66 69 6e  /// from the fin
15570 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20  alizer...       
15580 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
15590 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
155a0 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69   virtual void Di
155b0 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
155c0 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b  sing)..        {
155d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
155e0 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
155f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15600 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69               //i
15610 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  f (disposing).. 
15620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15630 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  /{..            
15640 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
15650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15680 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65  //    // dispose
15690 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
156a0 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
156b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
156c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
156f0 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20          //}.... 
15700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15730 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
15740 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
15750 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
15760 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
15770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
157b0 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
157c0 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
157d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
157e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
157f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
15800 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
15850 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
15860 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20  structor..      
15870 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e  .        /// Fin
15890 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
158a0 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
158b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
158c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53  ary>..        ~S
158d0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
158e0 65 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20  eCursor()..     
158f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15900 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
15910 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
15920 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
15930 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
15940 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
15950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
159a0 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
159b0 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 49 6e  eNativeHandle In
159c0 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f  terface..    ///
159d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
159e0 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61  /// This interfa
159f0 63 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 20  ce represents a 
15a00 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 70 72  native handle pr
15a10 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51  ovided by the SQ
15a20 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f  Lite core..    /
15a30 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
15a40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15a50 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65  .    public inte
15a60 72 66 61 63 65 20 49 53 51 4c 69 74 65 4e 61 74  rface ISQLiteNat
15a70 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  iveHandle..    {
15a80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
15a90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
15aa0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
15ab0 68 61 6e 64 6c 65 20 76 61 6c 75 65 2e 0d 0a 20  handle value... 
15ac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15ad0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 49  mary>..        I
15ae0 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64  ntPtr NativeHand
15af0 6c 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20  le { get; }..   
15b00 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
15b10 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
15b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
15b70 67 69 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e 61  gion ISQLiteMana
15b80 67 65 64 4d 6f 64 75 6c 65 20 49 6e 74 65 72 66  gedModule Interf
15b90 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ace..    /// <su
15ba0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
15bb0 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 72  This interface r
15bc0 65 70 72 65 73 65 6e 74 73 20 61 20 76 69 72 74  epresents a virt
15bd0 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
15be0 65 6e 74 61 74 69 6f 6e 20 77 72 69 74 74 65 6e  entation written
15bf0 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e   in..    /// man
15c00 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20  aged code...    
15c10 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
15c20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72      public inter
15c30 66 61 63 65 20 49 53 51 4c 69 74 65 4d 61 6e 61  face ISQLiteMana
15c40 67 65 64 4d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b  gedModule..    {
15c50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
15c60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
15c70 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e   /// Returns non
15c80 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 63 68  -zero if the sch
15c90 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72 74  ema for the virt
15ca0 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20 62 65  ual table has be
15cb0 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
15cc0 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20  declared...     
15cd0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15ce0 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  >..        bool 
15cf0 44 65 63 6c 61 72 65 64 20 7b 20 67 65 74 3b 20  Declared { get; 
15d00 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
15d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
15d60 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15d70 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
15d80 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ns the name of t
15d90 68 65 20 6d 6f 64 75 6c 65 20 61 73 20 69 74 20  he module as it 
15da0 77 61 73 20 72 65 67 69 73 74 65 72 65 64 20 77  was registered w
15db0 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 0d 0a  ith the SQLite..
15dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65          /// core
15dd0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
15de0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15df0 3e 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  >..        strin
15e00 67 20 4e 61 6d 65 20 7b 20 67 65 74 3b 20 7d 0d  g Name { get; }.
15e10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
15e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
15e70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15e80 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
15e90 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
15ea0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
15eb0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
15ec0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
15ed0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
15ee0 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  reate" /> method
15ef0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15f00 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15f10 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
15f20 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
15f30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15f40 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
15f50 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
15f60 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
15f70 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
15f80 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
15f90 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
15fa0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15fb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
15fc0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
15fd0 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
15fe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
15ff0 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
16000 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
16010 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
16020 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73  odule, as it was
16030 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
16040 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
16050 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
16060 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
16070 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63  e module instanc
16080 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
16090 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20  as created...   
160a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
160b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
160c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75  param name="argu
160d0 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20  ments">..       
160e0 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20   /// The module 
160f0 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20 6e  name, database n
16100 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61 62  ame, virtual tab
16110 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c 6c  le name, and all
16120 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20   other..        
16130 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70 61  /// arguments pa
16140 73 73 65 64 20 74 6f 20 74 68 65 20 43 52 45 41  ssed to the CREA
16150 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
16160 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
16170 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16180 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16190 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
161a0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
161b0 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
161c0 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
161d0 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
161e0 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
161f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
16200 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
16210 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
16220 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
16230 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
16240 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69        /// the vi
16250 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
16260 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16270 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16280 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
16290 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
162a0 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20  / Upon failure, 
162b0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
162c0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
162d0 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72  to contain an er
162e0 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ror..        ///
162f0 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20   message...     
16300 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
16320 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
16330 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
16340 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
16350 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
16360 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
16370 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
16380 6f 64 65 20 43 72 65 61 74 65 28 0d 0a 20 20 20  ode Create(..   
16390 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
163a0 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63  onnection connec
163b0 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d  tion,  /* in */.
163c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
163d0 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
163e0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
163f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16400 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65   string[] argume
16410 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20 20 2f  nts,           /
16420 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
16430 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 56       ref SQLiteV
16440 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
16450 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20  e, /* out */..  
16460 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
16470 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20 20  ring error      
16480 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a          /* out *
16490 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
164a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
164b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
16500 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16510 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
16520 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
16530 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
16540 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
16550 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
16560 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
16570 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
16580 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
16590 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
165a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
165b0 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
165c0 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n">..        ///
165d0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
165e0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
165f0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
16600 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20  ance associated 
16610 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  with..        //
16620 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  / the virtual ta
16630 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
16640 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
16650 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
16660 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
16670 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
16680 54 68 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d  The native user-
16690 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73  data pointer ass
166a0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
166b0 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20  s module, as it 
166c0 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  was..        ///
166d0 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
166e0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
166f0 72 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61  rary when the na
16700 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74  tive module inst
16710 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
16720 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a  / was created...
16730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
16740 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
16750 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
16760 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20  rguments">..    
16770 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75      /// The modu
16780 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73  le name, databas
16790 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20  e name, virtual 
167a0 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20  table name, and 
167b0 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20  all other..     
167c0 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
167d0 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 43   passed to the C
167e0 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
167f0 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  BLE statement...
16800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
16810 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
16820 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
16830 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
16840 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
16850 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
16860 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
16870 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
16880 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
16890 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
168a0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
168b0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
168c0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
168d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
168e0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
168f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
16900 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
16910 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
16920 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  error">..       
16930 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72   /// Upon failur
16940 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  e, this paramete
16950 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
16960 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e  ed to contain an
16970 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
16980 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  /// message...  
16990 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
169a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
169b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
169c0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
169d0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
169e0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
169f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
16a00 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
16a10 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28 0d  orCode Connect(.
16a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
16a30 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
16a40 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e  nnection,  /* in
16a50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16a60 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
16a70 61 74 61 2c 20 20 20 20 20 20 20 20 20 20 20 2f  ata,           /
16a80 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
16a90 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
16aa0 67 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20 20  guments,        
16ab0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
16ac0 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
16ad0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
16ae0 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f  table, /* out */
16af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
16b00 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20 20  f string error  
16b10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f              /* o
16b20 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
16b30 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
16b40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
16b90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16ba0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16bb0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
16bc0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
16bd0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
16be0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
16bf0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
16c00 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
16c10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
16c20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16c30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16c40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
16c50 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
16c60 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
16c70 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
16c80 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
16c90 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
16ca0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
16cb0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
16cc0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
16cd0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16ce0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16cf0 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
16d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16d10 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
16d20 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
16d30 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
16d40 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d  taining all the.
16d50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  .        /// dat
16d60 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74 73  a for the inputs
16d70 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65 6c   and outputs rel
16d80 61 74 69 6e 67 20 74 6f 20 69 6e 64 65 78 20 73  ating to index s
16d90 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  election...     
16da0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16db0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
16dc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
16dd0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
16de0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
16df0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
16e00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
16e10 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
16e20 6f 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d 0a  ode BestIndex(..
16e30 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
16e40 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
16e50 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
16e60 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
16e70 74 65 49 6e 64 65 78 20 69 6e 64 65 78 20 20 20  teIndex index   
16e80 20 20 20 20 20 20 2f 2a 20 69 6e 2c 20 6f 75 74        /* in, out
16e90 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16ea0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
16eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ef0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16f00 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16f10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
16f20 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
16f30 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
16f40 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
16f50 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
16f60 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
16f70 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f  e.xDisconnect" /
16f80 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
16f90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16fa0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16fb0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
16fc0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
16fd0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
16fe0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
16ff0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
17000 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
17010 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
17020 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
17030 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
17040 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
17050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
17060 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
17070 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
17080 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
17090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
170a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
170b0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
170c0 65 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  e Disconnect(.. 
170d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
170e0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
170f0 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ble /* in */..  
17100 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17110 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17160 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17170 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17180 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17190 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
171a0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
171b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
171c0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
171d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
171e0 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  roy" /> method..
171f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
17200 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
17210 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17220 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
17230 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
17240 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
17250 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
17260 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
17270 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
17280 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
17290 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
172a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
172b0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
172c0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
172d0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
172e0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
172f0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
17300 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
17310 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
17320 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79 28  rorCode Destroy(
17330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
17340 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17350 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d   table /* in */.
17360 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
17370 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
17380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
173d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
173e0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
173f0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
17400 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
17410 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
17420 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
17430 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f  eNativeModule.xO
17440 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  pen" /> method..
17450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
17460 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
17470 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17480 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
17490 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
174a0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
174b0 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
174c0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
174d0 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
174e0 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
174f0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
17500 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
17510 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
17520 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75   <param name="cu
17530 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
17540 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
17550 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
17560 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
17570 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
17580 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
17590 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
175a0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
175b0 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
175c0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
175d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
175e0 74 68 20 74 68 65 20 6e 65 77 6c 79 20 6f 70 65  th the newly ope
175f0 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
17600 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20  e cursor...     
17610 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
17620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
17630 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
17640 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
17650 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
17660 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
17670 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
17680 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
17690 6f 64 65 20 4f 70 65 6e 28 0d 0a 20 20 20 20 20  ode Open(..     
176a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
176b0 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c  tualTable table,
176c0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
176d0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
176e0 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75   ref SQLiteVirtu
176f0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
17700 72 73 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  rsor /* out */..
17710 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
17720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
17730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17770 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
17780 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17790 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
177a0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
177b0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
177c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
177d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
177e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  NativeModule.xCl
177f0 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ose" /> method..
17800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
17810 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
17820 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17830 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
17840 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17850 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17860 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
17870 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17880 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
17890 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
178a0 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20   the previously 
178b0 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74  opened virtual t
178c0 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62  able cursor to b
178d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
178e0 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
178f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17900 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17910 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17920 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17930 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17940 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
17950 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
17960 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43  QLiteErrorCode C
17970 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lose(..         
17980 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
17990 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
179a0 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  or /* in */..   
179b0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
179c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
179d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
17a20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
17a30 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
17a40 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
17a50 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
17a60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
17a70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
17a80 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
17a90 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
17aa0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
17ab0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17ac0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17ad0 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
17ae0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
17af0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
17b00 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
17b10 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
17b20 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
17b30 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
17b40 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70  he previously op
17b50 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
17b60 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d  le cursor to be.
17b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
17b80 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
17b90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
17ba0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17bb0 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e  e="indexNumber">
17bc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75  ..        /// Nu
17bd0 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c  mber used to hel
17be0 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73  p identify the s
17bf0 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a  elected index...
17c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17c10 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17c20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
17c30 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20  ndexString">..  
17c40 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67        /// String
17c50 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
17c60 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
17c70 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  ted index...    
17c80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
17c90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
17ca0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
17cb0 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
17cc0 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72   The values corr
17cd0 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63  esponding to eac
17ce0 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20  h column in the 
17cf0 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
17d00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17d10 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17d20 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
17d30 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
17d40 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
17d50 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
17d60 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
17d70 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
17d80 45 72 72 6f 72 43 6f 64 65 20 46 69 6c 74 65 72  ErrorCode Filter
17d90 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
17da0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
17db0 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 20  eCursor cursor, 
17dc0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
17dd0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 4e        int indexN
17de0 75 6d 62 65 72 2c 20 20 20 20 20 20 20 20 20 20  umber,          
17df0 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
17e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
17e10 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c  ing indexString,
17e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
17e30 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
17e40 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b      SQLiteValue[
17e50 5d 20 76 61 6c 75 65 73 20 20 20 20 20 20 20 20  ] values        
17e60 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
17e70 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
17e80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ed0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
17ee0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17ef0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
17f00 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
17f10 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
17f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
17f30 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
17f40 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
17f50 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
17f60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
17f70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17f80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17f90 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
17fa0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
17fb0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
17fc0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
17fd0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
17fe0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
17ff0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
18000 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70  he previously op
18010 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
18020 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d  le cursor to be.
18030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
18040 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18050 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18060 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
18070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
18080 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
18090 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
180a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
180b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
180c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4e 65 78  iteErrorCode Nex
180d0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
180e0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
180f0 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20  leCursor cursor 
18100 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
18110 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
18120 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18170 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18180 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18190 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
181a0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
181b0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
181c0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
181d0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
181e0 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
181f0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
18200 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18210 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18220 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
18230 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
18240 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
18250 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
18260 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
18270 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  ct instance..   
18280 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
18290 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65  ted with the pre
182a0 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76  viously opened v
182b0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
182c0 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20  sor to be..     
182d0 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20     /// used...  
182e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
182f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
18300 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
18310 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
18320 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20  if no more rows 
18330 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20 7a  are available; z
18340 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
18350 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
18360 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18370 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20 20  bool Eof(..     
18380 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
18390 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
183a0 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d  cursor /* in */.
183b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
183c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18410 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
18420 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18430 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
18440 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
18450 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
18460 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
18470 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
18480 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
18490 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
184a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
184b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
184c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
184d0 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20  me="cursor">..  
184e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
184f0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
18500 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
18510 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
18520 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
18530 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
18540 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c  th the previousl
18550 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c  y opened virtual
18560 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f   table cursor to
18570 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
18580 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
18590 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
185a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
185b0 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22 3e   name="context">
185c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
185d0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
185e0 69 74 65 43 6f 6e 74 65 78 74 22 20 2f 3e 20 6f  iteContext" /> o
185f0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
18600 6f 20 62 65 20 75 73 65 64 20 66 6f 72 0d 0a 20  o be used for.. 
18610 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72         /// retur
18620 6e 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  ning the specifi
18630 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 20  ed column value 
18640 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  to the SQLite co
18650 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
18660 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18670 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18680 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
18690 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
186a0 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64 20   The zero-based 
186b0 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e 64  index correspond
186c0 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75 6d  ing to the colum
186d0 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  n containing the
186e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
186f0 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
18700 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
18710 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18720 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
18740 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
18750 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
18760 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
18770 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
18780 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f  LiteErrorCode Co
18790 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  lumn(..         
187a0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
187b0 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
187c0 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  or, /* in */..  
187d0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
187e0 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 2c  Context context,
187f0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
18800 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18810 20 69 6e 74 20 69 6e 64 65 78 20 20 20 20 20 20   int index      
18820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18830 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
18840 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
18850 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
188a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
188b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
188c0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
188d0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
188e0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
188f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
18900 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
18910 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22  veModule.xRowId"
18920 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
18930 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
18940 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
18950 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75   <param name="cu
18960 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
18970 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
18980 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
18990 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
189a0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d  object instance.
189b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
189c0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
189d0 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e   previously open
189e0 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
189f0 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20   cursor to be.. 
18a00 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e         /// used.
18a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18a20 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
18a30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
18a40 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
18a50 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
18a60 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
18a70 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
18a80 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
18a90 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20  he unique..     
18aa0 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72     /// integer r
18ab0 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f  ow identifier fo
18ac0 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  r the current ro
18ad0 77 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  w for the specif
18ae0 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20  ied cursor...   
18af0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18b00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18b10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
18b20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
18b30 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
18b40 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
18b50 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
18b60 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
18b70 72 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20 20  rCode RowId(..  
18b80 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
18b90 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
18ba0 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e  or cursor, /* in
18bb0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18bc0 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20   ref long rowId 
18bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18be0 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
18bf0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
18c00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18c50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18c60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18c70 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
18c80 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
18c90 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
18ca0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
18cb0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
18cc0 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
18cd0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
18ce0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
18cf0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
18d00 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
18d10 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
18d20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
18d30 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
18d40 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
18d50 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
18d60 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
18d70 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
18d80 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
18d90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18da0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18db0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
18dc0 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
18dd0 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 3c  / The array of <
18de0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
18df0 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Value" /> object
18e00 20 69 6e 73 74 61 6e 63 65 73 20 63 6f 6e 74 61   instances conta
18e10 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f  ining..        /
18e20 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72 20 6d 6f  // the new or mo
18e30 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61  dified column va
18e40 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  lues, if any... 
18e50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18e60 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18e70 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f   <param name="ro
18e80 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  wId">..        /
18e90 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
18ea0 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
18eb0 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
18ec0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20   to contain the 
18ed0 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20 20  unique..        
18ee0 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77 20  /// integer row 
18ef0 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74  identifier for t
18f00 68 65 20 72 6f 77 20 74 68 61 74 20 77 61 73 20  he row that was 
18f10 69 6e 73 65 72 74 65 64 2c 20 69 66 20 61 6e 79  inserted, if any
18f20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18f30 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18f40 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
18f50 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
18f60 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
18f70 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
18f80 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
18f90 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
18fa0 74 65 45 72 72 6f 72 43 6f 64 65 20 55 70 64 61  teErrorCode Upda
18fb0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
18fc0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
18fd0 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e  ble table, /* in
18fe0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18ff0 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76   SQLiteValue[] v
19000 61 6c 75 65 73 2c 20 20 20 20 20 2f 2a 20 69 6e  alues,     /* in
19010 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19020 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20   ref long rowId 
19030 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75             /* ou
19040 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
19050 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
19060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
190b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
190c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
190d0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
190e0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
190f0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
19100 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
19110 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
19120 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65  le.xBegin" /> me
19130 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
19140 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19150 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19160 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
19170 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
19180 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
19190 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
191a0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
191b0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
191c0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
191d0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
191e0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
191f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19200 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
19210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
19220 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
19230 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
19240 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
19250 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
19260 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65  LiteErrorCode Be
19270 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
19280 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
19290 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
192a0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
192b0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
192c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19300 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19310 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
19320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
19330 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
19340 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
19350 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
19360 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
19370 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
19380 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
19390 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
193a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
193b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
193c0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
193d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
193e0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
193f0 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
19400 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19410 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
19420 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
19430 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
19440 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19450 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19460 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
19470 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
19480 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
19490 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
194a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
194b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
194c0 74 65 45 72 72 6f 72 43 6f 64 65 20 53 79 6e 63  teErrorCode Sync
194d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
194e0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
194f0 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
19500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
19510 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19560 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
19570 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
19580 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
19590 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
195a0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
195b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
195c0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
195d0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
195e0 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f  Commit" /> metho
195f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
19600 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
19610 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19620 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
19630 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
19640 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
19650 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
19660 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
19670 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
19680 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
19690 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
196a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
196b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
196c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
196d0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
196e0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
196f0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
19700 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
19710 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
19720 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6d 6d 69  eErrorCode Commi
19730 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
19740 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
19750 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
19760 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
19770 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
197d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
197e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
197f0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
19800 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
19810 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19820 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
19830 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
19840 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65  xRollback" /> me
19850 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
19860 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19870 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19880 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
19890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
198a0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
198b0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
198c0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
198d0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
198e0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
198f0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
19900 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
19910 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19920 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
19930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
19940 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
19950 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
19960 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
19970 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
19980 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f  LiteErrorCode Ro
19990 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
199a0 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
199b0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
199c0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
199d0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
199e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
199f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19a30 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
19a40 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19a50 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
19a60 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
19a70 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
19a80 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
19a90 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
19aa0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
19ab0 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
19ac0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
19ad0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
19ae0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19af0 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
19b00 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
19b10 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
19b20 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
19b30 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
19b40 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
19b50 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
19b60 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
19b70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19b80 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
19b90 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
19ba0 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20  umentCount">..  
19bb0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
19bc0 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
19bd0 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f  s to the functio
19be0 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d  n being sought..
19bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
19c00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
19c10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
19c20 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  name">..        
19c30 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
19c40 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69  the function bei
19c50 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20  ng sought...    
19c60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19c70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19c80 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74  aram name="funct
19c90 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ion">..        /
19ca0 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
19cb0 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
19cc0 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
19cd0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d   to contain the.
19ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
19cf0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75  e cref="SQLiteFu
19d00 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  nction" /> objec
19d10 74 20 69 6e 73 74 61 6e 63 65 20 72 65 73 70 6f  t instance respo
19d20 6e 73 69 62 6c 65 20 66 6f 72 0d 0a 20 20 20 20  nsible for..    
19d30 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
19d40 74 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  ting the specifi
19d50 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  ed function...  
19d60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19d70 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
19d80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c  <param name="pCl
19d90 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20  ientData">..    
19da0 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
19db0 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
19dc0 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
19dd0 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
19de0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
19df0 2f 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  / native user-da
19e00 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
19e10 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
19e20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65      /// <paramre
19e30 66 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  f name="function
19e40 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  " />...        /
19e50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19e60 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
19e70 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
19e80 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
19e90 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
19ea0 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65  on was found; ze
19eb0 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
19ec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
19ed0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 62  urns>..        b
19ee0 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69 6f 6e  ool FindFunction
19ef0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
19f00 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
19f10 65 20 74 61 62 6c 65 2c 20 20 20 20 2f 2a 20 69  e table,    /* i
19f20 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
19f30 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f    int argumentCo
19f40 75 6e 74 2c 20 20 20 20 20 20 20 20 20 20 20 2f  unt,           /
19f50 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
19f60 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
19f70 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
19f80 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
19f90 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
19fa0 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74  teFunction funct
19fb0 69 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ion, /* out */..
19fc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
19fd0 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
19fe0 74 61 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20  ta       /* out 
19ff0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1a000 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a050 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1a060 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1a070 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1a080 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1a090 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1a0a0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1a0b0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1a0c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1a0d0 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74  .xRename" /> met
1a0e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1a0f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a100 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1a110 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1a120 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1a130 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1a140 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1a150 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1a160 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1a170 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1a180 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1a190 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1a1a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1a1b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a1c0 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20 20  e="newName">..  
1a1d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65        /// The ne
1a1e0 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76  w name for the v
1a1f0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1a200 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1a210 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1a220 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1a230 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1a240 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1a250 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1a260 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1a270 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1a280 72 6f 72 43 6f 64 65 20 52 65 6e 61 6d 65 28 0d  rorCode Rename(.
1a290 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1a2a0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
1a2b0 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  table, /* in */.
1a2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1a2d0 69 6e 67 20 6e 65 77 4e 61 6d 65 20 20 20 20 20  ing newName     
1a2e0 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
1a2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1a300 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1a310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a350 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1a360 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1a370 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1a380 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
1a390 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
1a3a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1a3b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1a3c0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
1a3d0 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74  avepoint" /> met
1a3e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1a3f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a400 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1a410 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1a420 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1a430 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1a440 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1a450 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1a460 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1a470 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1a480 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1a490 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1a4a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1a4b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a4c0 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  e="savepoint">..
1a4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1a4e0 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69   is an integer i
1a4f0 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65 72 20  dentifier under 
1a500 77 68 69 63 68 20 74 68 65 20 74 68 65 20 63 75  which the the cu
1a510 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 0d 0a  rrent state of..
1a520 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1a530 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68  virtual table sh
1a540 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e 0d 0a  ould be saved...
1a550 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1a560 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1a570 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1a580 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1a590 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1a5a0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1a5b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1a5c0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1a5d0 72 72 6f 72 43 6f 64 65 20 53 61 76 65 70 6f 69  rrorCode Savepoi
1a5e0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
1a5f0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1a600 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e  ble table, /* in
1a610 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1a620 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 20   int savepoint  
1a630 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
1a640 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1a650 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1a6b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1a6c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1a6d0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
1a6e0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
1a6f0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1a700 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
1a710 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1a720 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
1a730 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1a740 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1a750 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1a760 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1a770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1a780 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1a790 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1a7a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1a7b0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1a7c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1a7d0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1a7e0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1a7f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1a800 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1a810 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e  ame="savepoint">
1a820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1a830 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  is is an integer
1a840 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74   used to indicat
1a850 65 20 74 68 61 74 20 61 6e 79 20 73 61 76 65 64  e that any saved
1a860 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1a870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65  .        /// ide
1a880 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20  ntifier greater 
1a890 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
1a8a0 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20   this should be 
1a8b0 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 0d 0a  deleted by the..
1a8c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74          /// virt
1a8d0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a8e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a8f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1a900 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a910 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1a920 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1a930 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1a940 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a950 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a960 43 6f 64 65 20 52 65 6c 65 61 73 65 28 0d 0a 20  Code Release(.. 
1a970 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1a980 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
1a990 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ble, /* in */.. 
1a9a0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
1a9b0 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20  avepoint        
1a9c0 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1a9d0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1a9e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1aa40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1aa50 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1aa60 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1aa70 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1aa80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1aa90 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1aaa0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
1aab0 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
1aac0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1aad0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1aae0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1aaf0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1ab00 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1ab10 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1ab20 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1ab30 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1ab40 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1ab50 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1ab60 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1ab70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ab80 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1ab90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1aba0 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  ="savepoint">.. 
1abb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1abc0 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64  is an integer id
1abd0 65 6e 74 69 66 69 65 72 20 75 73 65 64 20 74 6f  entifier used to
1abe0 20 73 70 65 63 69 66 79 20 61 20 73 70 65 63 69   specify a speci
1abf0 66 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20 20  fic saved..     
1ac00 20 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72     /// state for
1ac10 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1ac20 6c 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65 73  le for it to res
1ac30 74 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63 6b  tore itself back
1ac40 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20 20   to, which..    
1ac50 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61      /// should a
1ac60 6c 73 6f 20 68 61 76 65 20 74 68 65 20 65 66 66  lso have the eff
1ac70 65 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67 20  ect of deleting 
1ac80 61 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65 73  all saved states
1ac90 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20   with an..      
1aca0 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69 64    /// integer id
1acb0 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72  entifier greater
1acc0 20 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d   than this one..
1acd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1ace0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1acf0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1ad00 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1ad10 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1ad20 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1ad30 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1ad40 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1ad50 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61  ErrorCode Rollba
1ad60 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
1ad70 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
1ad80 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
1ad90 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1ada0 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74     int savepoint
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1adc0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1add0 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20     );..    }..  
1ade0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1adf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ae40 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
1ae50 51 4c 69 74 65 4d 65 6d 6f 72 79 20 53 74 61 74  QLiteMemory Stat
1ae60 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  ic Class..    //
1ae70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1ae80 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
1ae90 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20  contains static 
1aea0 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65  methods that are
1aeb0 20 75 73 65 64 20 74 6f 20 61 6c 6c 6f 63 61 74   used to allocat
1aec0 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 69  e,..    /// mani
1aed0 70 75 6c 61 74 65 2c 20 61 6e 64 20 66 72 65 65  pulate, and free
1aee0 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 70   native memory p
1aef0 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53  rovided by the S
1af00 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1af10 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
1af20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
1af30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
1af40 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 0d  ss SQLiteMemory.
1af50 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1af60 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
1af70 44 61 74 61 0d 0a 23 69 66 20 54 52 41 43 4b 5f  Data..#if TRACK_
1af80 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20  MEMORY_BYTES..  
1af90 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1afa0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1afb0 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   This object ins
1afc0 74 61 6e 63 65 20 69 73 20 75 73 65 64 20 74 6f  tance is used to
1afd0 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63   synchronize acc
1afe0 65 73 73 20 74 6f 20 74 68 65 20 6f 74 68 65 72  ess to the other
1aff0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1b000 61 74 69 63 20 66 69 65 6c 64 73 20 6f 66 20 74  atic fields of t
1b010 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
1b020 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1b030 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
1b040 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63  ate static objec
1b050 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
1b060 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20   object();....  
1b070 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b0c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1b0d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b0e0 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20 6e 75  /// The total nu
1b0f0 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64  mber of outstand
1b100 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73  ing memory bytes
1b110 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68   allocated by th
1b120 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
1b130 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
1b140 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1b150 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
1b160 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1b170 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
1b180 61 74 69 63 20 69 6e 74 20 62 79 74 65 73 41 6c  atic int bytesAl
1b190 6c 6f 63 61 74 65 64 3b 0d 0a 0d 0a 20 20 20 20  located;....    
1b1a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1b1f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1b200 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1b210 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  / The maximum nu
1b220 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64  mber of outstand
1b230 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73  ing memory bytes
1b240 20 65 76 65 72 20 61 6c 6c 6f 63 61 74 65 64 20   ever allocated 
1b250 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  by..        /// 
1b260 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
1b270 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1b280 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
1b290 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1b2a0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
1b2b0 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 6d 61  te static int ma
1b2c0 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61  ximumBytesAlloca
1b2d0 74 65 64 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ted;..#endif..  
1b2e0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1b2f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
1b350 72 65 67 69 6f 6e 20 4d 65 6d 6f 72 79 20 41 6c  region Memory Al
1b360 6c 6f 63 61 74 69 6f 6e 20 48 65 6c 70 65 72 20  location Helper 
1b370 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
1b380 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1b390 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f          /// Allo
1b3a0 63 61 74 65 73 20 61 74 20 6c 65 61 73 74 20 74  cates at least t
1b3b0 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 75 6d  he specified num
1b3c0 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66 20  ber of bytes of 
1b3d0 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 0d 0a 20  native memory.. 
1b3e0 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 61 20 74         /// via t
1b3f0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1b400 69 62 72 61 72 79 20 73 71 6c 69 74 65 33 5f 6d  ibrary sqlite3_m
1b410 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e  alloc() function
1b420 20 61 6e 64 20 72 65 74 75 72 6e 73 0d 0a 20 20   and returns..  
1b430 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 65        /// the re
1b440 73 75 6c 74 69 6e 67 20 6e 61 74 69 76 65 20 70  sulting native p
1b450 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
1b460 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1b470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b480 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
1b490 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b4a0 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
1b4b0 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a  s to allocate...
1b4c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1b4d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1b4e0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1b4f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1b500 69 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74  ive pointer that
1b510 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f   points to a blo
1b520 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20  ck of memory of 
1b530 61 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20 20  at least the..  
1b540 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
1b550 69 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73  ied size -OR- <s
1b560 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
1b570 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20  Zero" /> if the 
1b580 6d 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20  memory could..  
1b590 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65        /// not be
1b5a0 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20   allocated...   
1b5b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1b5c0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1b5d0 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
1b5e0 72 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73  r Allocate(int s
1b5f0 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ize)..        {.
1b600 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1b610 50 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e  Ptr pMemory = Un
1b620 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1b630 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  s.sqlite3_malloc
1b640 28 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54  (size);....#if T
1b650 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45  RACK_MEMORY_BYTE
1b660 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  S..            i
1b670 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e  f (pMemory != In
1b680 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1b690 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b6a0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62             int b
1b6b0 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28  lockSize = Size(
1b6c0 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  pMemory);....   
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b6e0 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d  (blockSize > 0).
1b6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b700 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b710 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1b720 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1b730 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1b740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b750 20 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c          bytesAll
1b760 6f 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b 53  ocated += blockS
1b770 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ize;....        
1b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b790 69 66 20 28 62 79 74 65 73 41 6c 6c 6f 63 61 74  if (bytesAllocat
1b7a0 65 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74 65  ed > maximumByte
1b7b0 73 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20 20  sAllocated)..   
1b7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7d0 20 20 20 20 20 20 20 20 20 6d 61 78 69 6d 75 6d           maximum
1b7e0 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3d  BytesAllocated =
1b7f0 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b   bytesAllocated;
1b800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b810 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b820 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b830 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1b840 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
1b850 20 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b   return pMemory;
1b860 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1b870 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1b880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b8c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1b8d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1b8e0 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65   /// Gets and re
1b8f0 74 75 72 6e 73 20 74 68 65 20 61 63 74 75 61 6c  turns the actual
1b900 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70 65   size of the spe
1b910 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c  cified memory bl
1b920 6f 63 6b 20 74 68 61 74 0d 0a 20 20 20 20 20 20  ock that..      
1b930 20 20 2f 2f 2f 20 77 61 73 20 70 72 65 76 69 6f    /// was previo
1b940 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
1b950 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  om the <see cref
1b960 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d  ="Allocate" /> m
1b970 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1b980 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b9a0 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79  am name="pMemory
1b9b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1b9c0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1b9d0 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79  er to the memory
1b9e0 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c   block previousl
1b9f0 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1ba00 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1ba10 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
1ba20 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  cate" /> method.
1ba30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ba40 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1ba50 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1ba60 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
1ba70 63 74 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20 62  ctual size, in b
1ba80 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6d 65 6d  ytes, of the mem
1ba90 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65 63 69 66  ory block specif
1baa0 69 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20  ied via the..   
1bab0 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
1bac0 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
1bad0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1bae0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1baf0 20 73 74 61 74 69 63 20 69 6e 74 20 53 69 7a 65   static int Size
1bb00 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29  (IntPtr pMemory)
1bb10 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1bb20 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
1bb30 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  D..            r
1bb40 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
1bb50 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
1bb60 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
1bb70 74 65 72 6f 70 28 70 4d 65 6d 6f 72 79 29 3b 0d  terop(pMemory);.
1bb80 0a 23 65 6c 69 66 20 54 52 41 43 4b 5f 4d 45 4d  .#elif TRACK_MEM
1bb90 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20  ORY_BYTES..     
1bba0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1bbb0 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
1bbc0 4f 6b 2c 20 77 65 20 63 61 6e 6e 6f 74 20 64 65  Ok, we cannot de
1bbd0 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65  termine the size
1bbe0 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62   of the memory b
1bbf0 6c 6f 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  lock;..         
1bc00 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 72     //       ther
1bc10 65 66 6f 72 65 2c 20 6a 75 73 74 20 74 72 61 63  efore, just trac
1bc20 6b 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f  k number of allo
1bc30 63 61 74 69 6f 6e 73 20 69 6e 73 74 65 61 64 2e  cations instead.
1bc40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1bc50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1bc60 74 75 72 6e 20 28 70 4d 65 6d 6f 72 79 20 21 3d  turn (pMemory !=
1bc70 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 20   IntPtr.Zero) ? 
1bc80 31 20 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a 20  1 : 0;..#else.. 
1bc90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1bca0 6e 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  n 0;..#endif..  
1bcb0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1bcc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1bd10 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1bd20 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1bd30 20 46 72 65 65 73 20 61 20 6d 65 6d 6f 72 79 20   Frees a memory 
1bd40 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79  block previously
1bd50 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
1bd60 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1bd70 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
1bd80 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
1bd90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1bda0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1bdb0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1bdc0 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20  ="pMemory">..   
1bdd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1bde0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
1bdf0 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20  he memory block 
1be00 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69  previously obtai
1be10 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
1be20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1be30 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f  ref="Allocate" /
1be40 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1be50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1be60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1be70 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 65 65  static void Free
1be80 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29  (IntPtr pMemory)
1be90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1bea0 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1beb0 54 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20  TES..           
1bec0 20 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20   if (pMemory != 
1bed0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1bee0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1bef0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
1bf00 20 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a   blockSize = Siz
1bf10 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20  e(pMemory);.... 
1bf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1bf30 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30  f (blockSize > 0
1bf40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1bf50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1bf60 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1bf70 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
1bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1bf90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bfa0 20 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41            bytesA
1bfb0 6c 6c 6f 63 61 74 65 64 20 2d 3d 20 62 6c 6f 63  llocated -= bloc
1bfc0 6b 53 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20  kSize;..        
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1bfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1bff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1c000 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1c010 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1c020 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1c030 65 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79 29  e3_free(pMemory)
1c040 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1c050 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1c060 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1c070 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1c080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1c0d0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1c0e0 53 74 72 69 6e 67 20 53 74 61 74 69 63 20 43 6c  String Static Cl
1c0f0 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
1c100 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1c110 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61  This class conta
1c120 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f  ins static metho
1c130 64 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64  ds that are used
1c140 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61   to deal with na
1c150 74 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 54  tive..    /// UT
1c160 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1c170 65 72 73 20 74 6f 20 62 65 20 75 73 65 64 20 77  ers to be used w
1c180 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
1c190 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1c1a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1c1b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c1c0 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69  tatic class SQLi
1c1d0 74 65 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b 0d  teString..    {.
1c1e0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
1c1f0 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e   Private Constan
1c200 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
1c210 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1c220 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
1c230 68 65 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73 69  he maximum possi
1c240 62 6c 65 20 6c 65 6e 67 74 68 20 66 6f 72 20 74  ble length for t
1c250 68 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20  he native UTF-8 
1c260 65 6e 63 6f 64 65 64 0d 0a 20 20 20 20 20 20 20  encoded..       
1c270 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 75 73 65   /// strings use
1c280 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  d with the SQLit
1c290 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
1c2a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1c2b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c2c0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
1c2d0 69 6e 74 20 54 68 69 72 74 79 42 69 74 73 20 3d  int ThirtyBits =
1c2e0 20 30 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d 0a   0x3fffffff;....
1c2f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1c300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1c340 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c350 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1c360 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
1c370 65 20 3c 73 65 65 20 63 72 65 66 3d 22 45 6e 63  e <see cref="Enc
1c380 6f 64 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63 74  oding" /> object
1c390 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
1c3a0 6f 20 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20  o handle..      
1c3b0 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e    /// conversion
1c3c0 73 20 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e  s from/to UTF-8.
1c3d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c3e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1c3f0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1c400 20 72 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64 69   readonly Encodi
1c410 6e 67 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 20  ng Utf8Encoding 
1c420 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 3b  = Encoding.UTF8;
1c430 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1c440 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1c450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c490 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1c4a0 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38     #region UTF-8
1c4b0 20 45 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65 72   Encoding Helper
1c4c0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
1c4d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c4e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1c4f0 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
1c500 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69  ied managed stri
1c510 6e 67 20 69 6e 74 6f 20 74 68 65 20 55 54 46 2d  ng into the UTF-
1c520 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d 0a  8 encoding and..
1c530 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
1c540 72 6e 73 20 74 68 65 20 61 72 72 61 79 20 6f 66  rns the array of
1c550 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e   bytes containin
1c560 67 20 69 74 73 20 72 65 70 72 65 73 65 6e 74 61  g its representa
1c570 74 69 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20 20  tion in that..  
1c580 20 20 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 69        /// encodi
1c590 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng...        ///
1c5a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1c5b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1c5c0 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
1c5d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1c5e0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f  anaged string to
1c5f0 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
1c600 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1c610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1c620 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1c630 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
1c640 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e   bytes containin
1c650 67 20 74 68 65 20 72 65 70 72 65 73 65 6e 74 61  g the representa
1c660 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e 61  tion of the mana
1c670 67 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ged..        ///
1c680 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 55   string in the U
1c690 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f 72  TF-8 encoding or
1c6a0 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75   null upon failu
1c6b0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1c6c0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1c6d0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1c6e0 69 63 20 62 79 74 65 5b 5d 20 47 65 74 55 74 66  ic byte[] GetUtf
1c6f0 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67  8BytesFromString
1c700 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
1c710 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20  tring value..   
1c720 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1c730 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c740 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
1c750 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1c760 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
1c770 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
1c780 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e     return Utf8En
1c790 63 6f 64 69 6e 67 2e 47 65 74 42 79 74 65 73 28  coding.GetBytes(
1c7a0 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
1c7b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1c7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c800 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c810 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1c820 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1c830 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
1c840 65 64 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  ed array of byte
1c850 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61  s representing a
1c860 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 0d 0a   string in the..
1c870 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d          /// UTF-
1c880 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20 72  8 encoding and r
1c890 65 74 75 72 6e 73 20 61 20 6d 61 6e 61 67 65 64  eturns a managed
1c8a0 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20   string...      
1c8b0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1c8c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1c8d0 61 72 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65 73  aram name="bytes
1c8e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1c8f0 54 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74  The array of byt
1c900 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  es to convert...
1c910 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1c920 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1c930 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1c940 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
1c950 61 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20 6e  aged string or n
1c960 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
1c970 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c980 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1c990 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1c9a0 20 73 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e   string GetStrin
1c9b0 67 46 72 6f 6d 55 74 66 38 42 79 74 65 73 28 0d  gFromUtf8Bytes(.
1c9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
1c9d0 65 5b 5d 20 62 79 74 65 73 0d 0a 20 20 20 20 20  e[] bytes..     
1c9e0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1c9f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ca00 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75   if (bytes == nu
1ca10 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1ca20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1ca30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1ca40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ca50 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1ca60 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f   return Utf8Enco
1ca70 64 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28 62  ding.GetString(b
1ca80 79 74 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ytes);..#else.. 
1ca90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1caa0 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47  n Utf8Encoding.G
1cab0 65 74 53 74 72 69 6e 67 28 62 79 74 65 73 2c 20  etString(bytes, 
1cac0 30 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 29  0, bytes.Length)
1cad0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1cae0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
1caf0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1cb00 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1cb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1cb50 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 55         #region U
1cb60 54 46 2d 38 20 53 74 72 69 6e 67 20 48 65 6c 70  TF-8 String Help
1cb70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1cb80 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1cb90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50  >..        /// P
1cba0 72 6f 62 65 73 20 61 20 6e 61 74 69 76 65 20 70  robes a native p
1cbb0 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69  ointer to a stri
1cbc0 6e 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20  ng in the UTF-8 
1cbd0 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20 69 74 73  encoding for its
1cbe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 65  ..        /// te
1cbf0 72 6d 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63 68  rminating NUL ch
1cc00 61 72 61 63 74 65 72 2c 20 77 69 74 68 69 6e 20  aracter, within 
1cc10 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65  the specified le
1cc20 6e 67 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20 20  ngth limit...   
1cc30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1cc40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1cc50 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
1cc60 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1cc70 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e  /// The native N
1cc80 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74  UL-terminated st
1cc90 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20  ring pointer... 
1cca0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ccb0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ccc0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 69   <param name="li
1ccd0 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mit">..        /
1cce0 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c  // The maximum l
1ccf0 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74  ength of the nat
1cd00 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62  ive string, in b
1cd10 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ytes...        /
1cd20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1cd30 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1cd40 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1cd50 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  The length of th
1cd60 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c  e native string,
1cd70 20 69 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20 7a   in bytes -OR- z
1cd80 65 72 6f 20 69 66 20 74 68 65 20 6c 65 6e 67 74  ero if the lengt
1cd90 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  h..        /// c
1cda0 6f 75 6c 64 20 6e 6f 74 20 62 65 20 64 65 74 65  ould not be dete
1cdb0 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20  rmined...       
1cdc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1cdd0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1cde0 73 74 61 74 69 63 20 69 6e 74 20 50 72 6f 62 65  static int Probe
1cdf0 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74  ForUtf8ByteLengt
1ce00 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
1ce10 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a  IntPtr pValue,..
1ce20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1ce30 6c 69 6d 69 74 0d 0a 20 20 20 20 20 20 20 20 20  limit..         
1ce40 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1ce50 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1ce60 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a   length = 0;....
1ce70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ce80 28 70 56 61 6c 75 65 20 21 3d 20 49 6e 74 50 74  (pValue != IntPt
1ce90 72 2e 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d 69  r.Zero) && (limi
1cea0 74 20 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20  t > 0))..       
1ceb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1cec0 20 20 20 20 20 20 20 20 64 6f 0d 0a 20 20 20 20          do..    
1ced0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1cee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cef0 20 20 20 69 66 20 28 4d 61 72 73 68 61 6c 2e 52     if (Marshal.R
1cf00 65 61 64 42 79 74 65 28 70 56 61 6c 75 65 2c 20  eadByte(pValue, 
1cf10 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a 20  length) == 0).. 
1cf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf30 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d         break;...
1cf40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cf50 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
1cf60 3e 3d 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20 20  >= limit)..     
1cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf80 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20     break;....   
1cf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfa0 20 6c 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20 20   length++;..    
1cfb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 77 68              } wh
1cfc0 69 6c 65 20 28 74 72 75 65 29 3b 0d 0a 20 20 20  ile (true);..   
1cfd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1cfe0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1cff0 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20   length;..      
1d000 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1d010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d050 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1d060 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1d070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1d080 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
1d090 69 65 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  ied native NUL-t
1d0a0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
1d0b0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d 0a  string pointer..
1d0c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f          /// into
1d0d0 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e   a managed strin
1d0e0 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g...        /// 
1d0f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1d100 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d110 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20  ame="pValue">.. 
1d120 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1d130 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
1d140 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
1d150 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20  g pointer...    
1d160 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1d170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1d180 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1d190 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1d1a0 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20   string or null 
1d1b0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1d1c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1d1d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1d1e0 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
1d1f0 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing StringFromUt
1d200 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  f8IntPtr(..     
1d210 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1d220 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
1d230 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1d240 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d250 72 6e 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  rn StringFromUtf
1d260 38 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 0d  8IntPtr(pValue,.
1d270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d280 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79 74   ProbeForUtf8Byt
1d290 65 4c 65 6e 67 74 68 28 70 56 61 6c 75 65 2c 20  eLength(pValue, 
1d2a0 54 68 69 72 74 79 42 69 74 73 29 29 3b 0d 0a 20  ThirtyBits));.. 
1d2b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1d2c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1d2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1d310 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1d320 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1d330 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73  / Converts the s
1d340 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20  pecified native 
1d350 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1d360 6e 74 65 72 20 6f 66 20 74 68 65 20 73 70 65 63  nter of the spec
1d370 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  ified..        /
1d380 2f 2f 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61  // length into a
1d390 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e   managed string.
1d3a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1d3b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d3c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1d3d0 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20  e="pValue">..   
1d3e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1d3f0 69 76 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ive UTF-8 string
1d400 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
1d410 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1d420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1d430 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68  ram name="length
1d440 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1d450 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  The length of th
1d460 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c  e native string,
1d470 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20   in bytes...    
1d480 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1d490 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1d4a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1d4b0 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1d4c0 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20   string or null 
1d4d0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1d4e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1d4f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1d500 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
1d510 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing StringFromUt
1d520 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  f8IntPtr(..     
1d530 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1d540 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
1d550 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20     int length.. 
1d560 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1d570 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d580 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
1d590 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1d5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d5b0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1d5c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1d5d0 28 6c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20  (length > 0)..  
1d5e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74               byt
1d600 65 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20  e[] bytes = new 
1d610 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d  byte[length];...
1d620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d630 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56   Marshal.Copy(pV
1d640 61 6c 75 65 2c 20 62 79 74 65 73 2c 20 30 2c 20  alue, bytes, 0, 
1d650 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20  length);....    
1d660 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d670 72 6e 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d  rn GetStringFrom
1d680 55 74 66 38 42 79 74 65 73 28 62 79 74 65 73 29  Utf8Bytes(bytes)
1d690 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1d6a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d6b0 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d  return String.Em
1d6c0 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  pty;..        }.
1d6d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6f0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1d730 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1d740 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1d750 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1d760 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69  managed string i
1d770 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c  nto a native NUL
1d780 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20  -terminated..   
1d790 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73       /// UTF-8 s
1d7a0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73  tring pointer us
1d7b0 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69  ing memory obtai
1d7c0 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ned from the SQL
1d7d0 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20  ite core..      
1d7e0 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a    /// library...
1d7f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d800 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d810 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1d820 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
1d830 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
1d840 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76  d string to conv
1d850 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
1d860 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d870 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1d880 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1d890 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  he native NUL-te
1d8a0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
1d8b0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72  tring pointer or
1d8c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1d8d0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
1d8e0 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61  Zero" /> upon fa
1d8f0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1d900 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1d910 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1d920 74 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66  tatic IntPtr Utf
1d930 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
1d940 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
1d950 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
1d960 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1d970 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d980 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
1d990 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1d9a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
1d9b0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
1d9c0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1d9d0 72 20 72 65 73 75 6c 74 20 3d 20 49 6e 74 50 74  r result = IntPt
1d9e0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
1d9f0 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65       byte[] byte
1da00 73 20 3d 20 47 65 74 55 74 66 38 42 79 74 65 73  s = GetUtf8Bytes
1da10 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
1da20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1da30 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
1da40 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1da50 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
1da60 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
1da70 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
1da80 67 74 68 20 3d 20 62 79 74 65 73 2e 4c 65 6e 67  gth = bytes.Leng
1da90 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  th;....         
1daa0 20 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69     result = SQLi
1dab0 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
1dac0 65 28 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d 0a  e(length + 1);..
1dad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1dae0 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50   (result == IntP
1daf0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1db00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1db10 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
1db20 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
1db30 73 68 61 6c 2e 43 6f 70 79 28 62 79 74 65 73 2c  shal.Copy(bytes,
1db40 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67   0, result, leng
1db50 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  th);..          
1db60 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 42    Marshal.WriteB
1db70 79 74 65 28 72 65 73 75 6c 74 2c 20 6c 65 6e 67  yte(result, leng
1db80 74 68 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20  th, 0);....     
1db90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
1dba0 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d  sult;..        }
1dbb0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1dbc0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1dbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1dc20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38     #region UTF-8
1dc30 20 53 74 72 69 6e 67 20 41 72 72 61 79 20 48 65   String Array He
1dc40 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
1dc50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1dc60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1dc70 20 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69   Converts a logi
1dc80 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74  cal array of nat
1dc90 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1dca0 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 0d  ed UTF-8 string.
1dcb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69  .        /// poi
1dcc0 6e 74 65 72 73 20 69 6e 74 6f 20 61 6e 20 61 72  nters into an ar
1dcd0 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73  ray of managed s
1dce0 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 20  trings...       
1dcf0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1dd00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1dd10 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e  ram name="argc">
1dd20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1dd30 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d  e number of elem
1dd40 65 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67 69  ents in the logi
1dd50 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74  cal array of nat
1dd60 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
1dd70 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
1dd80 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1dd90 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20  nters...        
1dda0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ddb0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ddc0 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20   name="argv">.. 
1ddd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1dde0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1ddf0 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
1de00 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c  ay of native NUL
1de10 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20  -terminated..   
1de20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73       /// UTF-8 s
1de30 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74  tring pointers t
1de40 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
1de50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1de60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1de70 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1de80 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
1de90 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  f managed string
1dea0 73 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  s or null upon f
1deb0 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1dec0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1ded0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1dee0 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20  static string[] 
1def0 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55  StringArrayFromU
1df00 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72  tf8SizeAndIntPtr
1df10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
1df20 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
1df30 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
1df40 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  v..            )
1df50 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1df60 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72 67           if (arg
1df70 63 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20  c < 0)..        
1df80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1df90 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1dfa0 20 20 20 20 69 66 20 28 61 72 67 76 20 3d 3d 20      if (argv == 
1dfb0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1dfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1dfd0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
1dfe0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1dff0 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20  [] result = new 
1e000 73 74 72 69 6e 67 5b 61 72 67 63 5d 3b 0d 0a 0d  string[argc];...
1e010 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
1e020 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c   (int index = 0,
1e030 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20   offset = 0;..  
1e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e050 20 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c 74    index < result
1e060 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20  .Length;..      
1e070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
1e080 64 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d  dex++, offset +=
1e090 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20   IntPtr.Size).. 
1e0a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1e0c0 74 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c 69  tPtr pArg = SQLi
1e0d0 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
1e0e0 74 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73 65  tPtr(argv, offse
1e0f0 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
1e100 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e         result[in
1e110 64 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d 20  dex] = (pArg != 
1e120 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a  IntPtr.Zero) ?..
1e130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e140 20 20 20 20 53 74 72 69 6e 67 46 72 6f 6d 55 74      StringFromUt
1e150 66 38 49 6e 74 50 74 72 28 70 41 72 67 29 20 3a  f8IntPtr(pArg) :
1e160 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
1e170 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1e180 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
1e190 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  lt;..        }..
1e1a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1e1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1e200 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1e210 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
1e220 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61 6e   an array of man
1e230 61 67 65 64 20 73 74 72 69 6e 67 73 20 69 6e 74  aged strings int
1e240 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6e 61  o an array of na
1e250 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
1e260 2f 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  / NUL-terminated
1e270 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1e280 69 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20  inters...       
1e290 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1e2a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e2b0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73  ram name="values
1e2c0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1e2d0 54 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e  The array of man
1e2e0 61 67 65 64 20 73 74 72 69 6e 67 73 20 74 6f 20  aged strings to 
1e2f0 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
1e300 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1e310 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1e320 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1e330 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
1e340 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1e350 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
1e360 6e 67 20 70 6f 69 6e 74 65 72 73 20 6f 72 20 6e  ng pointers or n
1e370 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ull..        ///
1e380 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1e390 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1e3a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e3b0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
1e3c0 74 50 74 72 5b 5d 20 55 74 66 38 49 6e 74 50 74  tPtr[] Utf8IntPt
1e3d0 72 41 72 72 61 79 46 72 6f 6d 53 74 72 69 6e 67  rArrayFromString
1e3e0 41 72 72 61 79 28 0d 0a 20 20 20 20 20 20 20 20  Array(..        
1e3f0 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 76 61 6c      string[] val
1e400 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ues..           
1e410 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1e420 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
1e430 61 6c 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  alues == null)..
1e440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e450 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1e460 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1e470 74 72 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65  tr[] result = ne
1e480 77 20 49 6e 74 50 74 72 5b 76 61 6c 75 65 73 2e  w IntPtr[values.
1e490 4c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20  Length];....    
1e4a0 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
1e4b0 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65   index = 0; inde
1e4c0 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74  x < result.Lengt
1e4d0 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20  h; index++)..   
1e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
1e4f0 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74 66  ult[index] = Utf
1e500 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
1e510 67 28 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d 29  g(values[index])
1e520 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e530 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
1e540 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
1e550 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1e560 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1e570 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1e5d0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 79  #region SQLiteBy
1e5e0 74 65 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  tes Static Class
1e5f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1e600 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
1e610 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73  s class contains
1e620 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20   static methods 
1e630 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f  that are used to
1e640 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69 76   deal with nativ
1e650 65 0d 0a 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74  e..    /// point
1e660 65 72 73 20 74 6f 20 6d 65 6d 6f 72 79 20 62 6c  ers to memory bl
1e670 6f 63 6b 73 20 74 68 61 74 20 6c 6f 67 69 63 61  ocks that logica
1e680 6c 6c 79 20 63 6f 6e 74 61 69 6e 20 61 72 72 61  lly contain arra
1e690 79 73 20 6f 66 20 62 79 74 65 73 20 74 6f 20 62  ys of bytes to b
1e6a0 65 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64 20  e..    /// used 
1e6b0 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  with the SQLite 
1e6c0 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
1e6d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1e6e0 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
1e6f0 73 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c  static class SQL
1e700 69 74 65 42 79 74 65 73 0d 0a 20 20 20 20 7b 0d  iteBytes..    {.
1e710 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
1e720 20 42 79 74 65 20 41 72 72 61 79 20 48 65 6c 70   Byte Array Help
1e730 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1e740 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1e750 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
1e760 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76 65  onverts a native
1e770 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
1e780 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62  gical array of b
1e790 79 74 65 73 20 6f 66 20 74 68 65 0d 0a 20 20 20  ytes of the..   
1e7a0 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
1e7b0 65 64 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61  ed length into a
1e7c0 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72   managed byte ar
1e7d0 72 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ray...        //
1e7e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1e7f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1e800 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d   name="pValue">.
1e810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1e820 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1e830 74 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61  to the logical a
1e840 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f  rray of bytes to
1e850 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
1e860 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e880 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68  ram name="length
1e890 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1e8a0 54 68 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62  The length, in b
1e8b0 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6c 6f 67  ytes, of the log
1e8c0 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79  ical array of by
1e8d0 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  tes to convert..
1e8e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1e8f0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1e900 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1e910 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1e920 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79  naged byte array
1e930 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
1e940 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1e950 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1e960 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1e970 74 61 74 69 63 20 62 79 74 65 5b 5d 20 46 72 6f  tatic byte[] Fro
1e980 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  mIntPtr(..      
1e990 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61        IntPtr pVa
1e9a0 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lue,..          
1e9b0 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20    int length..  
1e9c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1e9d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e9e0 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d      if (pValue =
1e9f0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1ea00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea10 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1ea20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ea30 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  length == 0)..  
1ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1ea50 74 75 72 6e 20 6e 65 77 20 62 79 74 65 5b 30 5d  turn new byte[0]
1ea60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1ea70 20 62 79 74 65 5b 5d 20 72 65 73 75 6c 74 20 3d   byte[] result =
1ea80 20 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67 74 68   new byte[length
1ea90 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
1eaa0 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70    Marshal.Copy(p
1eab0 56 61 6c 75 65 2c 20 72 65 73 75 6c 74 2c 20 30  Value, result, 0
1eac0 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20  , length);....  
1ead0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1eae0 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
1eaf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1eb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1eb50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1eb60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1eb70 76 65 72 74 73 20 61 20 6d 61 6e 61 67 65 64 20  verts a managed 
1eb80 62 79 74 65 20 61 72 72 61 79 20 69 6e 74 6f 20  byte array into 
1eb90 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
1eba0 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d 0a 20   to a logical.. 
1ebb0 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79         /// array
1ebc0 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20 20   of bytes...    
1ebd0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1ebe0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1ebf0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
1ec00 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
1ec10 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79  / The managed by
1ec20 74 65 20 61 72 72 61 79 20 74 6f 20 63 6f 6e 76  te array to conv
1ec30 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
1ec40 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ec50 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1ec60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ec70 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
1ec80 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 62  r to a logical b
1ec90 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c  yte array or nul
1eca0 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
1ecb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1ecc0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1ecd0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49   public static I
1ece0 6e 74 50 74 72 20 54 6f 49 6e 74 50 74 72 28 0d  ntPtr ToIntPtr(.
1ecf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
1ed00 65 5b 5d 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  e[] value..     
1ed10 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1ed20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ed30 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
1ed40 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1ed50 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
1ed60 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
1ed70 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
1ed80 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74  th = value.Lengt
1ed90 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
1eda0 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20    if (length == 
1edb0 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
1edc0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
1edd0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1ede0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65         IntPtr re
1edf0 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d  sult = SQLiteMem
1ee00 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e  ory.Allocate(len
1ee10 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
1ee20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
1ee30 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1ee40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ee50 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1ee60 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
1ee70 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
1ee80 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c  (value, 0, resul
1ee90 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20  t, length);.... 
1eea0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1eeb0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
1eec0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
1eed0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
1eee0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1eef0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1ef00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef40 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1ef50 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 20  n SQLiteMarshal 
1ef60 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20  Static Class..  
1ef70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1ef80 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
1ef90 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61  ass contains sta
1efa0 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74  tic methods that
1efb0 20 61 72 65 20 75 73 65 64 20 74 6f 20 70 65 72   are used to per
1efc0 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20  form several..  
1efd0 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20    /// low-level 
1efe0 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67  data marshalling
1eff0 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20 6e   tasks between n
1f000 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67 65  ative and manage
1f010 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
1f020 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f030 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f040 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61 72   class SQLiteMar
1f050 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  shal..    {..   
1f060 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
1f070 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  Ptr Helper Metho
1f080 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
1f090 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1f0a0 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61     /// Returns a
1f0b0 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
1f0c0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
1f0d0 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64  t instance based
1f0e0 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   on the..       
1f0f0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
1f100 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
1f110 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1f120 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74 65  ance and an inte
1f130 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ger..        ///
1f140 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20 20   offset...      
1f150 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f160 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1f170 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
1f180 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
1f190 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1f1a0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
1f1b0 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
1f1c0 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
1f1d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
1f1e0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
1f1f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1f200 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1f210 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1f220 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
1f230 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
1f240 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
1f250 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
1f260 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  cation that the 
1f270 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  new..        ///
1f280 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
1f290 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
1f2a0 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f  stance should po
1f2b0 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20  int to...       
1f2c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f2d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1f2e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1f2f0 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63  / The new <see c
1f300 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
1f310 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
1f320 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f330 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f340 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1f350 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f 72  IntPtr IntPtrFor
1f360 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
1f370 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
1f380 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
1f390 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20    int offset..  
1f3a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1f3b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f3c0 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 49      return new I
1f3d0 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f  ntPtr(pointer.To
1f3e0 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74  Int64() + offset
1f3f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
1f400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1f410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1f460 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1f470 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70     /// Rounds up
1f480 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a 65   an integer size
1f490 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c   to the next mul
1f4a0 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69  tiple of the ali
1f4b0 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  gnment...       
1f4c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1f4d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1f4e0 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
1f4f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f500 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73  e size, in bytes
1f510 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64 20  , to be rounded 
1f520 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  up...        ///
1f530 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1f540 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f550 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d  me="alignment">.
1f560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1f570 20 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e 6d   required alignm
1f580 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74 75  ent for the retu
1f590 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  rn value...     
1f5a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1f5b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1f5c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1f5d0 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e  /// The size, in
1f5e0 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64 20   bytes, rounded 
1f5f0 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d  up to the next m
1f600 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a  ultiple of the..
1f610 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67          /// alig
1f620 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61 6c  nment.  This val
1f630 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62 65  ue may end up be
1f640 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73 20  ing the same as 
1f650 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20  the original..  
1f660 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d        /// size..
1f670 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1f680 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1f690 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
1f6a0 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20  nt RoundUp(..   
1f6b0 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
1f6c0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1f6d0 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20  int alignment.. 
1f6e0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1f6f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f700 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65       int alignme
1f710 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69  ntMinusOne = ali
1f720 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20  gnment - 1;..   
1f730 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f740 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65  ((size + alignme
1f750 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61  ntMinusOne) & ~a
1f760 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65  lignmentMinusOne
1f770 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
1f780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1f7e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1f7f0 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
1f800 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69 6e  s the offset, in
1f810 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e   bytes, of the n
1f820 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ext structure me
1f830 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
1f840 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1f850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f860 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
1f870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f880 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74  e offset, in byt
1f890 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65  es, of the curre
1f8a0 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  nt structure mem
1f8b0 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
1f8c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f8d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1f8e0 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20  ame="size">..   
1f8f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
1f900 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  e, in bytes, of 
1f910 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75  the current stru
1f920 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
1f930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f940 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f950 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c   <param name="al
1f960 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20  ignment">..     
1f970 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e     /// The align
1f980 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c 20  ment, in bytes, 
1f990 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75  of the next stru
1f9a0 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
1f9b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f9c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f9d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1f9e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73      /// The offs
1f9f0 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  et, in bytes, of
1fa00 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74   the next struct
1fa10 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
1fa20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1fa30 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1fa40 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4e  lic static int N
1fa50 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
1fa60 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
1fa70 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
1fa80 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20     int size,..  
1fa90 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c            int al
1faa0 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ignment..       
1fab0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1fac0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
1fad0 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66  eturn RoundUp(of
1fae0 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69  fset + size, ali
1faf0 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  gnment);..      
1fb00 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
1fb10 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1fb20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1fb70 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61        #region Ma
1fb80 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70 65  rshal Read Helpe
1fb90 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
1fba0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1fbb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
1fbc0 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ads a <see cref=
1fbd0 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
1fbe0 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
1fbf0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
1fc00 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
1fc10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1fc20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1fc30 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1fc40 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
1fc50 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1fc60 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
1fc70 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1fc80 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
1fc90 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
1fca0 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
1fcb0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
1fcc0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1fcd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1fce0 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
1fcf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1fd00 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
1fd10 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
1fd20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
1fd30 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
1fd40 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1fd50 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
1fd60 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20  e to be read is 
1fd70 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
1fd80 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1fd90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1fda0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1fdb0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1fdc0 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
1fdd0 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
1fde0 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
1fdf0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1fe00 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1fe10 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1fe20 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33 32  ic int ReadInt32
1fe30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1fe40 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
1fe50 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1fe60 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
1fe70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
1fe80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1fe90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1fea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1feb0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
1fec0 64 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20  dInt32(pointer, 
1fed0 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d  offset);..#else.
1fee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1fef0 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
1ff00 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f  Int32(IntPtrForO
1ff10 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
1ff20 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66  ffset));..#endif
1ff30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ff40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ff50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ff90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1ffa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ffb0 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65   /// Reads a <se
1ffc0 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
1ffd0 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
1ffe0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
1fff0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
20000 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
20010 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
20020 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20030 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
20040 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
20050 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20060 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
20070 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
20080 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
20090 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
200a0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
200b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
200c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
200d0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
200e0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
200f0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
20100 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
20110 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
20120 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
20130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20140 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
20150 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  /> value to be r
20160 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ead is located..
20170 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20180 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20190 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
201a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
201b0 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
201c0 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20  /> value at the 
201d0 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
201e0 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
201f0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
20200 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
20210 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 52  ic static long R
20220 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20  eadInt64(..     
20230 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
20240 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
20250 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
20260 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
20270 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
20280 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20290 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
202a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
202b0 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 70  shal.ReadInt64(p
202c0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b  ointer, offset);
202d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
202e0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
202f0 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e  hal.ReadInt64(In
20300 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
20310 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b  inter, offset));
20320 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
20330 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
20340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20380 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20390 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
203a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
203b0 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ds a <see cref="
203c0 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
203d0 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
203e0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
203f0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
20400 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20410 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
20420 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20430 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
20440 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20450 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
20460 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20470 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
20480 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
20490 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
204a0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
204b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
204c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
204d0 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
204e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
204f0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
20500 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
20510 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
20520 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
20530 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
20540 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20  ="Double" /> to 
20550 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74  be read is locat
20560 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
20570 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20580 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
20590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
205a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  e <see cref="Dou
205b0 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 74  ble" /> value at
205c0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
205d0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
205e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
205f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20600 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 64   public static d
20610 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62 6c 65  ouble ReadDouble
20620 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
20630 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
20640 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
20650 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
20660 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
20670 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20680 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
206a0 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65  turn BitConverte
206b0 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44 6f 75  r.Int64BitsToDou
206c0 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65 61 64  ble(Marshal.Read
206d0 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
206e0 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72 2c          pointer,
206f0 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73   offset));..#els
20700 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
20710 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74  eturn BitConvert
20720 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74 43  er.ToDouble(BitC
20730 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
20740 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
20750 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65 61 64      Marshal.Read
20760 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
20770 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
20780 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23  ffset))), 0);..#
20790 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
207a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
207b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
20800 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
20810 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
20820 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  an <see cref="In
20830 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 66  tPtr" /> value f
20840 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
20850 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
20860 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
20870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
20880 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20890 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
208a0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
208b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
208c0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
208d0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
208e0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
208f0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
20900 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
20910 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
20920 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20930 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20940 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
20950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
20960 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
20970 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
20980 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
20990 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
209a0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
209b0 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
209c0 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
209d0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
209e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
209f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
20a00 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
20a10 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20a20 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75  "IntPtr" /> valu
20a30 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
20a40 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
20a50 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
20a60 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
20a70 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
20a80 69 63 20 49 6e 74 50 74 72 20 52 65 61 64 49 6e  ic IntPtr ReadIn
20a90 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
20aa0 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
20ab0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
20ac0 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
20ad0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
20ae0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
20af0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20b00 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
20b10 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
20b20 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f 69 6e  .ReadIntPtr(poin
20b30 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23  ter, offset);..#
20b40 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
20b50 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
20b60 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e 74 50  .ReadIntPtr(IntP
20b70 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
20b80 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  ter, offset));..
20b90 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
20ba0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
20bb0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
20bc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
20c10 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73      #region Mars
20c20 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70 65 72  hal Write Helper
20c30 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
20c40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
20c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
20c60 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  tes an <see cref
20c70 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
20c80 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
20c90 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
20ca0 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
20cb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20cc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20cd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20ce0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
20cf0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
20d00 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
20d10 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
20d20 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
20d30 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
20d40 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
20d50 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
20d60 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20d70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20d80 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
20d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20da0 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
20db0 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
20dc0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
20dd0 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
20de0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
20df0 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
20e00 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
20e10 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
20e20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
20e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20e40 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
20e50 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
20e60 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
20e70 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
20e80 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
20e90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20ea0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
20eb0 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
20ec0 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
20ed0 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
20ee0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
20ef0 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20   int offset,..  
20f00 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76 61            int va
20f10 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
20f20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
20f30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20f40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20f50 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
20f60 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 6f  al.WriteInt32(po
20f70 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76  inter, offset, v
20f80 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
20f90 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
20fa0 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49 6e  al.WriteInt32(In
20fb0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
20fc0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20  inter, offset), 
20fd0 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
20fe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
20ff0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
21050 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21060 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c 73  /// Writes an <s
21070 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
21080 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
21090 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
210a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
210b0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
210c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
210d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
210e0 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
210f0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
21100 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
21110 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
21120 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
21130 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
21140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
21150 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
21160 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
21170 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
21180 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
21190 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
211a0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
211b0 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
211c0 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
211d0 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
211e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
211f0 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
21200 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
21210 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
21220 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21230 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
21240 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21250 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
21260 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
21270 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
21280 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
21290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
212a0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
212b0 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
212c0 64 20 57 72 69 74 65 49 6e 74 36 34 28 0d 0a 20  d WriteInt64(.. 
212d0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
212e0 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
212f0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
21300 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
21310 20 6c 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20   long value..   
21320 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
21330 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
21340 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21350 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
21360 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
21370 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f  Int64(pointer, o
21380 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a  ffset, value);..
21390 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
213a0 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
213b0 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
213c0 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
213d0 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d  ffset), value);.
213e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
213f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
21400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21440 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21450 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21460 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
21470 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  es a <see cref="
21480 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
21490 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
214a0 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
214b0 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
214c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
214d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
214e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
214f0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
21500 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21510 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21520 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21530 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
21540 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
21550 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
21560 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
21570 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21580 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21590 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
215a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
215b0 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
215c0 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
215d0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
215e0 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
215f0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
21600 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
21610 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
21620 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
21630 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21650 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
21660 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21670 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
21680 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20  ouble" /> value 
21690 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
216a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
216b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
216c0 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
216d0 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20  eDouble(..      
216e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
216f0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
21700 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
21710 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62              doub
21720 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  le value..      
21730 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
21740 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
21750 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21760 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
21770 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
21780 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  64(pointer, offs
21790 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
217a0 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65       BitConverte
217b0 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34 42  r.DoubleToInt64B
217c0 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23 65  its(value));..#e
217d0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
217e0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
217f0 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
21800 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
21810 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  set),..         
21820 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72         BitConver
21830 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74 43  ter.ToInt64(BitC
21840 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
21850 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d 0a  s(value), 0));..
21860 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21870 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
21880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
218a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
218b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
218c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
218d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
218e0 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
218f0 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49  s a <see cref="I
21900 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
21910 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
21920 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
21930 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
21940 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21950 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21960 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21970 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
21980 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
21990 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
219a0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
219b0 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
219c0 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
219d0 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
219e0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
219f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21a00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
21a10 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
21a20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21a30 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
21a40 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
21a50 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
21a60 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
21a70 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
21a80 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
21a90 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73  to be written is
21aa0 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
21ab0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21ad0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
21ae0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21af0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
21b00 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74  tPtr" /> value t
21b10 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
21b20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21b30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
21b40 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
21b50 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
21b60 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
21b70 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
21b80 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
21b90 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
21ba0 72 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  r value..       
21bb0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
21bc0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
21bd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21be0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  K..            M
21bf0 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
21c00 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  tr(pointer, offs
21c10 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  et, value);..#el
21c20 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
21c30 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
21c40 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr(IntPtrForOff
21c50 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
21c60 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  set), value);..#
21c70 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
21c80 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
21c90 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
21ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ce0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21cf0 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63     #region Objec
21d00 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  t Helper Methods
21d10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21d20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21d30 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20 61   /// Generates a
21d40 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75 65   hash code value
21d50 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 2e   for the object.
21d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21d70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21d80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21d90 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
21da0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
21db0 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
21dc0 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74 68   to calculate th
21dd0 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20  e hash code...  
21de0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21df0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21e00 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65  <param name="ide
21e10 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20 20  ntity">..       
21e20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
21e30 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65 63   different objec
21e40 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74 68  t instances with
21e50 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20   the same value 
21e60 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20  should..        
21e70 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69 66  /// generate dif
21e80 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64 65  ferent hash code
21e90 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63 61  s, where applica
21ea0 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ble.  This param
21eb0 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eter..        //
21ec0 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  / has no effect 
21ed0 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
21ee0 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a  act Framework...
21ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
21f00 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
21f10 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
21f20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61 73       /// The has
21f30 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52  h code value -OR
21f40 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f 62  - zero if the ob
21f50 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20  ject is null... 
21f60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
21f70 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
21f80 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
21f90 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20   GetHashCode(.. 
21fa0 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
21fb0 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  t value,..      
21fc0 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74        bool ident
21fd0 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
21fe0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
21ff0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22000 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22010 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
22020 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20 20  dentity)..      
22030 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
22040 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e   RuntimeHelpers.
22050 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c 75  GetHashCode(valu
22060 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
22070 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
22080 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65  alue == null) re
22090 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
220a0 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
220b0 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b  e.GetHashCode();
220c0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
220d0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
220e0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
220f0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
22100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22140 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22150 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d   #region SQLiteM
22160 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73 73  odule Base Class
22170 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
22180 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
22190 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
221a0 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72  ts a managed vir
221b0 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
221c0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
221d0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73  ...    /// It is
221e0 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20   not sealed and 
221f0 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73 20  must be used as 
22200 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
22210 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20  or any..    /// 
22220 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72  user-defined vir
22230 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
22240 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d  e classes implem
22250 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64  ented in managed
22260 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
22270 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
22280 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
22290 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75  class SQLiteModu
222a0 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  le :..          
222b0 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64    ISQLiteManaged
222c0 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74  Module, /*ISQLit
222d0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f  eNativeModule,*/
222e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 44  ..            ID
222f0 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54  isposable /* NOT
22300 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20   SEALED */..    
22310 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
22320 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  on SQLiteNativeM
22330 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43 6c  odule Private Cl
22340 61 73 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ass..        ///
22350 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22360 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
22370 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  ss implements th
22380 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
22390 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
223a0 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
223b0 2f 20 69 6e 74 65 72 66 61 63 65 20 62 79 20 66  / interface by f
223c0 6f 72 77 61 72 64 69 6e 67 20 74 68 6f 73 65 20  orwarding those 
223d0 6d 65 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f 20  method calls to 
223e0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
223f0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
22400 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
22410 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 74 20  ect instance it 
22420 63 6f 6e 74 61 69 6e 73 2e 20 20 49 66 20 74 68  contains.  If th
22430 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
22440 6f 6e 74 61 69 6e 65 64 20 3c 73 65 65 20 63 72  ontained <see cr
22450 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
22460 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22470 61 6e 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61 6c  ance is null, al
22480 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
22490 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
224a0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
224b0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73 69  e" /> methods si
224c0 6d 70 6c 79 20 67 65 6e 65 72 61 74 65 20 61 6e  mply generate an
224d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 72  ..        /// er
224e0 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ror...        //
224f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
22500 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
22510 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
22520 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a 0d  eNativeModule :.
22530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22540 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
22550 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c  dule, IDisposabl
22560 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
22570 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
22580 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
22590 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
225a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
225b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
225c0 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c 75  This is the valu
225d0 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79 73  e that is always
225e0 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22 6c   used for the "l
225f0 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20 20 20  ogErrors"..     
22600 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
22610 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
22620 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
22630 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
22640 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
22650 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
22660 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
22670 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
22680 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
22690 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
226a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
226b0 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
226c0 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f  l DefaultLogErro
226d0 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  rs = true;....  
226e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
226f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22730 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22740 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22750 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
22760 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74 68   is the value th
22770 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  at is always use
22780 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45 78  d for the "logEx
22790 63 65 70 74 69 6f 6e 73 22 0d 0a 20 20 20 20 20  ceptions"..     
227a0 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
227b0 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
227c0 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
227d0 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
227e0 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
227f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
22800 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
22810 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
22820 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
22830 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22840 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
22850 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
22860 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65  l DefaultLogExce
22870 70 74 69 6f 6e 73 20 3d 20 74 72 75 65 3b 0d 0a  ptions = true;..
22880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
228e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
228f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22900 54 68 69 73 20 69 73 20 74 68 65 20 65 72 72 6f  This is the erro
22910 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20 75  r message text u
22920 73 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6e  sed when the con
22930 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 20  tained..        
22940 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
22950 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
22960 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
22970 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  nce is not avail
22980 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
22990 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65    /// for any re
229a0 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  ason...         
229b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
229c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
229d0 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
229e0 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ing ModuleNotAva
229f0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
22a00 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ge =..          
22a10 20 20 20 20 20 20 22 6e 61 74 69 76 65 20 6d 6f        "native mo
22a20 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
22a30 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  ion not availabl
22a40 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e";..           
22a50 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
22a60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
22a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
22ac0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
22ad0 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
22ae0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22af0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
22b00 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
22b10 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
22b20 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
22b30 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a  sed to provide..
22b40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22b50 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  an implementatio
22b60 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72  n of the <see cr
22b70 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
22b80 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
22b90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74           /// int
22ba0 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20  erface...       
22bb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
22bc0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
22bd0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 4d   private SQLiteM
22be0 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20  odule module;.. 
22bf0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
22c00 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
22c10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
22c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22c60 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
22c70 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
22c80 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
22c90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22cb0 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
22cc0 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
22cd0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
22ce0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22cf0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
22d00 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22d10 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20  module">..      
22d20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
22d30 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
22d40 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
22d50 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
22d60 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20  o provide..     
22d70 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d         /// an im
22d80 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
22d90 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
22da0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
22db0 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
22dc0 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63      /// interfac
22dd0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
22de0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22df0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
22e00 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
22e10 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
22e20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
22e30 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le module..     
22e40 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
22e50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
22e60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
22e70 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c  s.module = modul
22e80 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
22e90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
22ea0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
22eb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
22ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
22f00 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
22f10 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74  ion Private Stat
22f20 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
22f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
22f40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
22f50 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
22f60 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73  table error mess
22f70 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20  age to one that 
22f80 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e 61  indicates the na
22f90 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
22fa0 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70    /// module imp
22fb0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e  lementation is n
22fc0 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
22fd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
22fe0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23000 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
23010 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23020 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
23030 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
23040 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
23050 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
23060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23070 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
23080 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
23090 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
230a0 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73   The value of <s
230b0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45  ee cref="SQLiteE
230c0 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20  rrorCode.Error" 
230d0 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  />...           
230e0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
230f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
23100 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69  vate static SQLi
23110 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75  teErrorCode Modu
23120 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
23130 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
23140 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
23150 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
23160 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
23170 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23180 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
23190 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70  bleError(null, p
231a0 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67  Vtab, DefaultLog
231b0 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
231c0 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66               Def
231d0 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e  aultLogException
231e0 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  s, ModuleNotAvai
231f0 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67  lableErrorMessag
23200 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
23210 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
23220 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
23230 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
23240 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
23250 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23290 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
232a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
232b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
232c0 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61   /// Sets the ta
232d0 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ble error messag
232e0 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e  e to one that in
232f0 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69  dicates the nati
23300 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
23310 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  /// module imple
23320 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74  mentation is not
23330 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
23340 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
23350 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23360 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23370 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
23380 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23390 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
233a0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
233b0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
233c0 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
233d0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
233e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
233f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23400 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
23410 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23420 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
23430 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ue of <see cref=
23440 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  "SQLiteErrorCode
23450 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20  .Error" />...   
23460 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
23470 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23480 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
23490 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  tic SQLiteErrorC
234a0 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ode ModuleNotAva
234b0 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
234c0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
234d0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
234e0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
234f0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
23500 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23510 20 20 20 20 20 20 53 65 74 43 75 72 73 6f 72 45        SetCursorE
23520 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73  rror(null, pCurs
23530 6f 72 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72  or, DefaultLogEr
23540 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
23550 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75             Defau
23560 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  ltLogExceptions,
23570 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
23580 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
23590 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
235a0 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
235b0 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
235c0 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
235d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
235e0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
235f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
23600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23640 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
23650 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
23660 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d  eModule Members.
23670 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23680 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
23690 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
236a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
236b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
236c0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
236d0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
236e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
236f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
23700 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
23710 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
23720 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
23730 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
23740 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
23750 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
23760 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
23770 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23780 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
23790 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
237a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
237b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
237c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
237d0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
237e0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
237f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23800 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23810 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23820 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
23830 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
23840 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
23850 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
23860 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
23870 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
23880 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
23890 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
238a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
238b0 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
238c0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
238d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
238e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
238f0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
23900 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
23910 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23920 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23930 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
23940 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
23950 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
23960 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
23970 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
23980 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
23990 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
239a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
239b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
239c0 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
239d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
239e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
239f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
23a00 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
23a10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
23a20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
23a30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
23a40 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
23a50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23a60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
23a70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
23a80 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
23a90 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
23aa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23ab0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
23ac0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
23ad0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
23ae0 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
23af0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
23b00 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
23b10 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
23b20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23b30 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
23b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
23b50 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
23b60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
23b70 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
23b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23b90 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
23ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23bb0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
23bc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23bd0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
23be0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
23bf0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
23c00 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
23c10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
23c20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
23c30 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
23c40 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
23c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23c60 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
23c70 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
23c80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23c90 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
23ca0 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
23cb0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
23cc0 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
23cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ce0 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c    ModuleNotAvail
23cf0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
23d00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23d10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23d20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
23d30 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
23d40 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
23d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
23d60 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65  turn module.xCre
23d70 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
23d80 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
23d90 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  Aux, argc, argv,
23da0 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20   ref pVtab, ref 
23db0 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
23dc0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23dd0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
23de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
23e20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
23e30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23e40 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
23e50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
23e60 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
23e70 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
23e80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
23e90 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
23ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23eb0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
23ec0 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Db">..          
23ed0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
23ee0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
23ef0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
23f00 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
23f10 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
23f20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23f30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
23f40 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e  ram name="pAux">
23f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23f60 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
23f70 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
23f80 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
23f90 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
23fa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23fb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23fc0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23fd0 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
23fe0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
23ff0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
24000 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
24010 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
24020 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
24030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24040 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
24050 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24060 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
24070 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24080 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24090 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
240a0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
240b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
240c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
240d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
240e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
240f0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
24100 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
24110 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
24120 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
24130 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
24140 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
24150 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24160 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
24170 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f  aram name="pErro
24180 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
24190 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
241a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
241b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
241c0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
241d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
241e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
241f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
24200 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
24210 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
24220 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
24230 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
24240 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
24250 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
24260 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
24270 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
24280 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
24290 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
242a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
242b0 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
242c0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
242d0 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
242e0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
242f0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
24300 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
24310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24320 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
24330 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
24340 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
24350 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
24360 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
24370 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24380 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
24390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
243a0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
243b0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
243c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
243d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
243e0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
243f0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
24400 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
24410 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
24420 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
24430 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24450 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
24460 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
24470 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  PtrFromString(..
24480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24490 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f          ModuleNo
244a0 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
244b0 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  essage);....    
244c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244d0 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
244e0 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
244f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
24500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24510 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
24520 65 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  e.xConnect(..   
24530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24540 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67 63   pDb, pAux, argc
24550 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74 61  , argv, ref pVta
24560 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d  b, ref pError);.
24570 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
24580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
245e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
245f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24600 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
24610 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
24620 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
24630 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
24640 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24650 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
24660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
24670 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
24680 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24690 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
246a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
246b0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
246c0 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
246d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
246e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
246f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24700 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
24710 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24720 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
24730 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
24740 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
24750 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
24760 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24770 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
24780 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
24790 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
247a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
247b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
247c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
247d0 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
247e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
247f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
24800 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
24810 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
24820 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
24830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24840 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
24850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
24860 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
24870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
24880 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
24890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
248b0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
248c0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
248d0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
248e0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
248f0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
24900 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
24910 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
24920 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
24930 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
24940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24950 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
24960 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
24970 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
24980 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24990 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
249a0 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70 56  le.xBestIndex(pV
249b0 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20  tab, pIndex);.. 
249c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
249d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
249e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24a20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24a30 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24a40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
24a50 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
24a60 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
24a70 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
24a80 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
24a90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24aa0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24ab0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24ac0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
24ad0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24ae0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
24af0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
24b00 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
24b10 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
24b20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24b30 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
24b40 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
24b50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
24b60 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
24b70 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
24b80 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
24b90 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
24ba0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
24bb0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
24bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
24bd0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
24be0 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28  ode xDisconnect(
24bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24c00 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
24c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
24c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24c40 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
24c50 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
24c60 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
24c70 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
24c80 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
24c90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
24ca0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
24cb0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
24cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
24cd0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
24ce0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
24cf0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
24d00 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
24d10 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
24d20 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
24d30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
24d40 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
24d50 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
24d60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
24d70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
24dc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
24dd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24de0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24df0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
24e00 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
24e10 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
24e20 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24e30 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24e50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
24e60 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
24e70 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
24e80 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
24e90 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24ea0 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68  Destroy" /> meth
24eb0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
24ec0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24ed0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24ee0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
24ef0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24f00 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24f10 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24f20 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
24f30 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24f40 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24f50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
24f60 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
24f70 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
24f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24f90 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
24fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
24fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
24fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24fd0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
24fe0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
24ff0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
25000 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
25010 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
25020 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
25030 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
25040 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
25050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25060 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
25070 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
25080 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
25090 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
250a0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
250b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
250c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
250d0 75 6c 65 2e 78 44 65 73 74 72 6f 79 28 70 56 74  ule.xDestroy(pVt
250e0 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
250f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25100 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25140 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
25150 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25160 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
25170 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25180 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25190 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
251a0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
251b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
251c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
251d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
251e0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
251f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25200 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25210 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25220 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
25230 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
25240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
25250 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
25260 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
25270 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
25280 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25290 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
252a0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
252b0 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
252c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
252d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
252e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
252f0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25300 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25310 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25320 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25330 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
25340 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
25350 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
25360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
25370 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
25380 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
25390 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
253a0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
253b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
253c0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
253d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
253f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25400 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
25410 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
25420 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
25430 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
25440 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
25450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
25460 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
25470 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
25480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25490 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
254a0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
254b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
254c0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
254d0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
254e0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
254f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
25500 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61 62  dule.xOpen(pVtab
25510 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b 0d  , ref pCursor);.
25520 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
25530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25580 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
25590 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
255a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
255b0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
255c0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
255d0 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
255e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
255f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
25600 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25610 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25620 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
25630 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
25640 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
25650 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
25660 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
25670 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
25680 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
25690 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
256a0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
256b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
256c0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
256d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
256e0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
256f0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
25700 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
25710 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
25720 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
25730 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28  rrorCode xClose(
25740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25750 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
25760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25770 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
25780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25790 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
257a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
257b0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
257c0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
257d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
257e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
257f0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
25800 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
25810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25820 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
25830 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
25840 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25850 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
25860 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
25870 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
25880 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25890 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  rn module.xClose
258a0 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
258b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
258c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
258d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25910 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25920 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
25930 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
25940 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
25950 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
25960 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
25970 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25980 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25990 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
259a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
259b0 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
259c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
259d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
259e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
259f0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
25a00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25a10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25a30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
25a40 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20  xNum">..        
25a50 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25a60 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25a70 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25a80 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
25a90 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25aa0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25ab0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25ac0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74  aram name="idxSt
25ad0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
25ae0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25af0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25b00 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
25b10 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
25b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25b30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25b40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
25b50 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
25b60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25b70 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
25b80 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
25b90 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
25ba0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25bb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25bc0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
25bd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25be0 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
25bf0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
25c00 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
25c10 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
25c20 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
25c30 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25c40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25c60 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25c70 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25c80 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25c90 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25ca0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
25cb0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25cc0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
25cd0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
25ce0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
25cf0 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d  orCode xFilter(.
25d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25d10 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
25d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25d30 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
25d50 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20  ntPtr idxStr,.. 
25d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25d70 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
25d80 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
25d90 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20   argv..         
25da0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
25db0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25dc0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
25dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
25de0 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
25df0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
25e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
25e30 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
25e40 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
25e50 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
25e60 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
25e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25e80 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
25e90 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72  vailableCursorEr
25ea0 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d  ror(pCursor);...
25eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25ec0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
25ed0 46 69 6c 74 65 72 28 70 43 75 72 73 6f 72 2c 20  Filter(pCursor, 
25ee0 69 64 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c 20  idxNum, idxStr, 
25ef0 61 72 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20 20  argc, argv);..  
25f00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
25f10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
25f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25f70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
25f80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25f90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25fa0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25fb0 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65  ule.xNext" /> me
25fc0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25fd0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25fe0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25ff0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26000 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
26010 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26020 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26030 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26040 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
26050 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26060 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26070 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26080 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
26090 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
260a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
260b0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
260c0 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f  .xNext" /> metho
260d0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
260e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
260f0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
26100 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
26110 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
26120 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
26130 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
26140 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
26150 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26160 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26180 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
26190 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
261a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
261b0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
261c0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
261d0 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
261e0 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
261f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
26200 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
26210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26220 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
26230 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
26240 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
26250 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26260 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
26270 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f 72  le.xNext(pCursor
26280 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26290 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
262a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
262b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
262f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
26300 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26310 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26320 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26330 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20  iveModule.xEof" 
26340 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26350 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
26360 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
26370 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26380 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
26390 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
263a0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
263b0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
263c0 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
263d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
263e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
263f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26400 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
26410 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26420 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26430 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26440 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65  dule.xEof" /> me
26450 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26460 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
26470 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
26480 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28 0d  ublic int xEof(.
26490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
264a0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
264b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
264c0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
264d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
264e0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
264f0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
26500 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
26510 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
26520 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26530 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
26540 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
26550 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
26560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26570 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
26580 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26590 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
265a0 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75              Modu
265b0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
265c0 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
265d0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
265e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
265f0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
26600 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26610 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26620 6d 6f 64 75 6c 65 2e 78 45 6f 66 28 70 43 75 72  module.xEof(pCur
26630 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  sor);..         
26640 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26650 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26690 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
266a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
266b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
266c0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
266d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
266e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
266f0 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
26700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26710 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
26720 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
26730 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
26740 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
26750 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
26760 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
26770 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
26780 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
26790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
267a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
267b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
267c0 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78  am name="pContex
267d0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t">..           
267e0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
267f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26800 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
26810 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  umn" /> method..
26820 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26830 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
26840 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26850 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
26860 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26870 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26880 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26890 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
268a0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
268b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
268c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
268d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
268e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
268f0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26900 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26910 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
26920 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26930 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
26940 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
26950 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
26960 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
26970 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  lumn(..         
26980 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
26990 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
269a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
269b0 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20  Context,..      
269c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
269d0 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
269e0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
269f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26a00 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
26a10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
26a20 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
26a30 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
26a40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
26a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a60 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
26a70 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
26a80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26a90 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
26aa0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
26ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26ac0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
26ad0 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
26ae0 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26b00 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f  eturn module.xCo
26b10 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70 43  lumn(pCursor, pC
26b20 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b 0d  ontext, index);.
26b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b90 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
26ba0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26bb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26bc0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26bd0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26be0 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
26bf0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26c00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
26c10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
26c20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
26c30 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
26c40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
26c50 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
26c60 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
26c70 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e  odule.xRowId" />
26c80 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
26c90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
26ca0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
26cb0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
26cc0 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
26cd0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26ce0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26cf0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26d00 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
26d10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26d20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26d30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26d40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
26d50 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26d60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26d70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26d80 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
26d90 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26da0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
26db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
26dc0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
26dd0 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
26de0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
26df0 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
26e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26e10 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
26e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
26e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
26e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
26e60 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
26e70 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
26e80 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
26e90 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
26ea0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
26eb0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
26ec0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
26ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
26ee0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
26ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26f00 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
26f10 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
26f20 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
26f30 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
26f40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
26f50 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75  odule.xRowId(pCu
26f60 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29  rsor, ref rowId)
26f70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
26f80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fd0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
26fe0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
26ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27000 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27010 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27020 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
27030 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27040 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27050 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27060 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
27070 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
27080 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27090 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
270a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
270b0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
270c0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
270d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
270e0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
270f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27100 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
27110 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27120 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27130 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27140 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
27150 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27160 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27170 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27180 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
27190 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
271a0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
271b0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
271c0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
271d0 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
271e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
271f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27200 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
27210 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
27220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27230 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27240 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27250 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
27260 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27270 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27280 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
27290 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
272a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
272b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
272c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
272d0 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
272e0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
272f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27300 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
27310 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
27320 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
27330 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
27340 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27350 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
27360 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
27370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27380 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
27390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
273a0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
273b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
273c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
273d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
273e0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
273f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
27400 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
27410 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
27420 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27430 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
27440 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
27450 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
27460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27470 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
27480 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
27490 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
274a0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
274b0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
274c0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
274d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
274e0 64 75 6c 65 2e 78 55 70 64 61 74 65 28 70 56 74  dule.xUpdate(pVt
274f0 61 62 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20  ab, argc, argv, 
27500 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20  ref rowId);..   
27510 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27520 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
27530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27570 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27580 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
27590 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
275a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
275b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
275c0 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65  le.xBegin" /> me
275d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
275e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
275f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27600 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
27610 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
27620 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27630 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27640 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27650 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
27660 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27670 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27680 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
27690 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
276a0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
276b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
276c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
276d0 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
276e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
276f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
27700 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
27710 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
27720 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
27730 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
27740 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
27750 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
27760 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
27770 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
27780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27790 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
277a0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
277b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
277c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
277d0 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
277e0 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
277f0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
27800 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
27810 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
27820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27830 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
27840 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
27850 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
27860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27870 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
27880 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20  Begin(pVtab);.. 
27890 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
278a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
278b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
278f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27900 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
27910 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
27920 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
27930 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27940 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
27950 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27960 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
27970 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
27980 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27990 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
279a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
279b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
279c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
279d0 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
279e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
279f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27a00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
27a10 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
27a20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27a30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27a40 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27a50 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64  xSync" /> method
27a60 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27a70 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
27a80 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
27a90 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
27aa0 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
27ab0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
27ac0 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
27ad0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
27ae0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27af0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27b10 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
27b20 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
27b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27b40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27b50 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
27b60 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
27b70 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
27b80 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
27b90 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
27ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27bb0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
27bc0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
27bd0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
27be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27bf0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79  eturn module.xSy
27c00 6e 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  nc(pVtab);..    
27c10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
27c20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
27c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27c70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27c80 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27c90 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27ca0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27cb0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27cc0 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
27cd0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27ce0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27cf0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27d00 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
27d10 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
27d20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27d30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27d40 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27d50 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
27d60 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27d70 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27d80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27d90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27da0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27db0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27dc0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27dd0 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
27de0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27df0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
27e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
27e10 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
27e20 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
27e40 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
27e50 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
27e60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
27e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27e80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27e90 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
27ea0 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
27eb0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
27ec0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
27ed0 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
27ee0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
27ef0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
27f00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
27f10 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
27f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27f30 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
27f40 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
27f50 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
27f60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27f70 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
27f80 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74 61 62 29  e.xCommit(pVtab)
27f90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
27fa0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ff0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
28000 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
28010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28020 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28030 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28040 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
28050 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
28060 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28070 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
28080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28090 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
280a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
280b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
280c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
280d0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
280e0 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
280f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28100 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28110 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
28120 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28130 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28140 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28150 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
28160 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64  lback" /> method
28170 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28180 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
28190 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
281a0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
281b0 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  e xRollback(..  
281c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
281d0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
281e0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
281f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28220 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
28230 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
28240 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28250 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
28260 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
28270 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
28280 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
28290 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
282a0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
282b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282c0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
282d0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
282e0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
282f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28300 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
28310 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62  .xRollback(pVtab
28320 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
28330 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28340 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28380 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28390 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
283a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
283b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
283c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
283d0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
283e0 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
283f0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28400 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
28410 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28420 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
28430 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
28440 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
28450 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
28460 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
28470 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
28480 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28490 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
284a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
284b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
284c0 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  nArg">..        
284d0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
284e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
284f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28500 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
28510 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28520 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28530 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
28540 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28550 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  "zName">..      
28560 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28570 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28580 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28590 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
285a0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
285b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
285c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
285d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
285e0 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20  e="callback">.. 
285f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28600 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28610 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28620 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
28630 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
28640 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28650 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
28660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28670 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44  m name="pClientD
28680 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ata">..         
28690 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
286a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
286b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
286c0 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
286d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
286e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
286f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28700 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
28710 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28720 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28730 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28740 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
28750 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
28760 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28770 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
28780 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
28790 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
287a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
287b0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
287c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
287d0 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
287e0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
287f0 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20  Ptr zName,..    
28800 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
28810 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
28820 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
28830 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
28840 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
28850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28860 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
28870 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28880 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28890 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
288a0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
288b0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
288c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
288d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
288e0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
288f0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
28900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28910 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
28920 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
28930 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28940 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
28950 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
28960 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
28970 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
28980 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b         return 0;
28990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
289a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
289b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
289c0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
289d0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
289e0 20 20 20 20 20 20 20 20 20 70 56 74 61 62 2c 20           pVtab, 
289f0 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66  nArg, zName, ref
28a00 20 63 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70   callback, ref p
28a10 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20  ClientData);..  
28a20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
28a30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
28a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28a90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
28aa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
28ab0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
28ac0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
28ad0 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
28ae0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28af0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
28b00 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
28b10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
28b20 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
28b30 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28b40 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28b50 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28b60 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
28b70 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28b80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28ba0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
28bb0 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ew">..          
28bc0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28bd0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28be0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
28bf0 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  name" /> method.
28c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28c10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28c20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
28c30 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
28c40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
28c50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
28c60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
28c70 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
28c80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28c90 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
28ca0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
28cb0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
28cc0 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  e xRename(..    
28cd0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
28ce0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
28cf0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
28d00 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20 20  r zNew..        
28d10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
28d20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28d30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
28d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28d50 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
28d60 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
28d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28d80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
28d90 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
28da0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
28db0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
28dc0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
28dd0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
28de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28df0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
28e00 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
28e10 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
28e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28e30 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65  eturn module.xRe
28e40 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65 77  name(pVtab, zNew
28e50 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
28e60 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28e70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28eb0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28ec0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28ed0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28ee0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28ef0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28f00 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
28f10 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  oint" /> method.
28f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28f30 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
28f40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28f50 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
28f60 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
28f70 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28f80 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28f90 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
28fa0 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
28fb0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28fc0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28fd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
28fe0 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
28ff0 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
29000 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29010 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29020 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29030 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
29040 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29050 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29060 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29070 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
29080 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29090 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
290a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
290b0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
290c0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
290d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
290e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
290f0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
29100 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70  ErrorCode xSavep
29110 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
29120 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
29130 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
29140 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
29150 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
29160 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
29170 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29180 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
29190 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
291a0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
291b0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
291c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
291d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
291e0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
291f0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
29200 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
29210 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
29220 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
29230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29240 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
29250 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
29260 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
29270 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29280 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65  urn module.xSave
29290 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53 61  point(pVtab, iSa
292a0 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
292b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
292c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
292d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29310 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29320 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29330 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29340 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29350 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29360 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
29370 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29380 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
29390 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
293a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
293b0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
293c0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
293d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
293e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
293f0 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
29400 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29410 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29430 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61  <param name="iSa
29440 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
29450 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29460 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29470 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29480 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
29490 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
294a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
294b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
294c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
294d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
294e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
294f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29500 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e  ule.xRelease" />
29510 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29520 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
29530 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
29540 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
29550 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
29560 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
29570 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
29580 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29590 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
295a0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
295b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
295c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
295d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
295e0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
295f0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
29600 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
29610 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
29620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29630 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
29640 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
29650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29660 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
29670 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
29680 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29690 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
296a0 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
296b0 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
296c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
296d0 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65   module.xRelease
296e0 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69  (pVtab, iSavepoi
296f0 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt);..          
29700 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
29710 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29750 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
29760 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
29770 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
29780 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29790 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
297a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
297b0 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
297c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
297d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
297e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
297f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
29800 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
29810 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29820 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29830 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
29840 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65  ollbackTo" /> me
29850 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29860 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29870 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29880 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
29890 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
298a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
298b0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
298c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
298d0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
298e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
298f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29900 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29910 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
29920 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29930 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29940 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29950 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
29960 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  kTo" /> method..
29970 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29980 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
29990 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
299a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
299b0 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
299c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
299d0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
299e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
299f0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
29a00 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
29a10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29a30 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29a40 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
29a50 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
29a60 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
29a70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
29a80 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
29a90 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
29aa0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
29ab0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29ac0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
29ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29ae0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
29af0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
29b00 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
29b10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29b20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
29b30 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56  e.xRollbackTo(pV
29b40 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
29b50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
29b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
29b70 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
29b80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29bd0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
29be0 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
29bf0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
29c00 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
29c10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29c20 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
29c30 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
29c40 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
29c50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
29c70 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
29c80 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
29c90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29ca0 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
29cb0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29cc0 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
29cd0 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
29ce0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
29cf0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
29d00 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
29d10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29d60 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
29d70 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
29d80 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
29d90 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
29da0 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
29db0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;..            /
29dc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29dd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
29de0 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
29df0 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
29e00 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
29e10 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
29e20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69             /// i
29e30 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
29e40 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
29e50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
29e60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
29e70 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
29e80 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
29e90 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
29ea0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
29eb0 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
29ec0 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
29ed0 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
29ee0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29ef0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29f00 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
29f10 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
29f20 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
29f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f40 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
29f50 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29  iteNativeModule)
29f60 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
29f70 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
29f80 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
29f90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
29fa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fe0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
29ff0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2a000 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a010 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
2a020 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2a030 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
2a040 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2a050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a060 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
2a070 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20  isposing">..    
2a080 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
2a090 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  zero if this met
2a0a0 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
2a0b0 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  led from the..  
2a0c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2a0d0 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65  ee cref="Dispose
2a0e0 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20  ()" /> method.  
2a0f0 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  Zero if this met
2a100 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a 20 20  hod is being..  
2a110 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61            /// ca
2a120 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20 66 69  lled from the fi
2a130 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20  nalizer...      
2a140 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2a150 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2a160 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65  private /* prote
2a170 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20  cted virtual */ 
2a180 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
2a190 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
2a1a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a1c0 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
2a1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1f0 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
2a200 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
2a210 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
2a220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a230 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2a240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a270 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70     //    // disp
2a280 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
2a290 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
2a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2b0 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2a2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2a2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2f0 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20     //}....      
2a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a330 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
2a340 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
2a350 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
2a360 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
2a370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a380 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2a3d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2a3e0 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20  OTE: The module 
2a3f0 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20  is not owned by 
2a400 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 64  us; therefore, d
2a410 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 20  o not..         
2a420 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2a430 20 20 20 20 64 69 73 70 6f 73 65 20 69 74 2e 0d      dispose it..
2a440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a450 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2a460 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a470 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29  (module != null)
2a480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a490 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2a4a0 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
2a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4c0 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
2a4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a4e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2a4f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2a500 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2a510 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a560 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
2a570 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
2a580 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a590 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a5a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61          /// Fina
2a5b0 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63  lizes this objec
2a5c0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2a5d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2a5e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a5f0 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61 74 69       ~SQLiteNati
2a600 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2a610 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a620 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
2a630 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
2a640 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2a650 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2a660 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
2a670 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a680 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2a6e0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
2a6f0 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
2a700 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2a710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2a720 20 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f 6e   default version
2a730 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73   of the native s
2a740 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2a750 72 75 63 74 75 72 65 20 69 6e 20 75 73 65 2e 0d  ructure in use..
2a760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2a770 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a780 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2a790 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66  readonly int Def
2a7a0 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f  aultModuleVersio
2a7b0 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20 20  n = 2;..        
2a7c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2a7d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a820 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
2a830 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
2a840 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2a850 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2a860 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
2a870 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2a880 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2a890 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2a8a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
2a8b0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2a8c0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2a8d0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
2a8e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2a8f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
2a900 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2a910 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2a920 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a   nativeModule;..
2a930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a980 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2a990 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a9a0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2a9b0 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
2a9c0 6f 72 65 20 74 68 65 20 64 65 73 74 72 75 63 74  ore the destruct
2a9d0 6f 72 20 64 65 6c 65 67 61 74 65 20 74 6f 20 62  or delegate to b
2a9e0 65 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20 20  e passed to..   
2a9f0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
2aa00 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
2aa10 20 76 69 61 20 74 68 65 20 73 71 6c 69 74 65 33   via the sqlite3
2aa20 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2aa30 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  le_module()..   
2aa40 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f       /// functio
2aa50 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
2aa60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2aa70 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61      private Unsa
2aa80 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2aa90 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 64  xDestroyModule d
2aaa0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d  estroyModule;...
2aab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2ab10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ab20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2ab30 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2ab40 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  re a pointer to 
2ab50 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
2ab60 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
2ab70 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
2ab80 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
2ab90 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
2aba0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2abb0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
2abc0 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
2abd0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2abe0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2abf0 65 20 49 6e 74 50 74 72 20 64 69 73 70 6f 73 61  e IntPtr disposa
2ac00 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20  bleModule;....  
2ac10 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ac60 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2ac70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2ac80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2ac90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2aca0 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2acb0 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68   used to hold th
2acc0 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69 76  e block of nativ
2acd0 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 63 6f  e memory that co
2ace0 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20 20 20  ntains..        
2acf0 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65 20 73  /// the native s
2ad00 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2ad10 72 75 63 74 75 72 65 20 61 73 73 6f 63 69 61 74  ructure associat
2ad20 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a  ed with this obj
2ad30 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
2ad40 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72   instance when r
2ad50 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e  unning on the .N
2ad60 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
2ad70 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  work...        /
2ad80 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2ad90 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
2ada0 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d 6f 64  ntPtr pNativeMod
2adb0 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ule;..#endif....
2adc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2ae10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2ae20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ae30 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2ae40 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2ae50 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2ae60 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20 61 73  ble instances as
2ae70 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
2ae80 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
2ae90 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74  module.  The nat
2aea0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
2aeb0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
2aec0 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
2aed0 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69   /// structure i
2aee0 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e  s used to key in
2aef0 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74 69  to this collecti
2af00 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2af10 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2af20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69 63       private Dic
2af30 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20  tionary<IntPtr, 
2af40 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
2af50 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20  le> tables;.... 
2af60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2af70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2afb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2afc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2afd0 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
2afe0 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65  is used to store
2aff0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
2b000 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74 61 6e  le cursor instan
2b010 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ces..        ///
2b020 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2b030 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54   this module.  T
2b040 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
2b050 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  r to the..      
2b060 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74    /// sqlite3_vt
2b070 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
2b080 64 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  d structure is u
2b090 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20  sed to key into 
2b0a0 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
2b0b0 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  / collection... 
2b0c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2b0d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2b0e0 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2b0f0 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2b100 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
2b110 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a  or> cursors;....
2b120 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b170 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2b180 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b190 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2b1a0 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2b1b0 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2b1c0 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73  ble function ins
2b1d0 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20  tances..        
2b1e0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
2b1f0 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e  ith this module.
2b200 20 20 54 68 65 20 63 61 73 65 2d 69 6e 73 65 6e    The case-insen
2b210 73 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 20  sitive function 
2b220 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  name..        //
2b230 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72  / and the number
2b240 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 28 77   of arguments (w
2b250 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20 22  ith -1 meaning "
2b260 61 6e 79 22 29 20 61 72 65 20 75 73 65 64 20 74  any") are used t
2b270 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  o..        /// c
2b280 6f 6e 73 74 72 75 63 74 20 74 68 65 20 73 74 72  onstruct the str
2b290 69 6e 67 20 74 68 61 74 20 69 73 20 75 73 65 64  ing that is used
2b2a0 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69   to key into thi
2b2b0 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  s collection... 
2b2c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2b2d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2b2e0 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2b2f0 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74 65  y<string, SQLite
2b300 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74 69  Function> functi
2b310 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  ons;..        #e
2b320 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2b330 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
2b380 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2b390 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f  ublic Constructo
2b3a0 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
2b3b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2b3c0 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
2b3d0 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
2b3e0 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
2b3f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2b400 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2b410 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
2b420 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ame">..        /
2b430 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
2b440 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69 73  he module.  This
2b450 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f   parameter canno
2b460 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t be null...    
2b470 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2b480 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2b490 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73 74   SQLiteModule(st
2b4a0 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20 20  ring name)..    
2b4b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b4c0 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
2b4d0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2b4e0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2b4f0 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
2b500 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a  ption("name");..
2b510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2b520 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d  is.name = name;.
2b530 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
2b540 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65 77 20 44  s.tables = new D
2b550 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72  ictionary<IntPtr
2b560 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  , SQLiteVirtualT
2b570 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20 20  able>();..      
2b580 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 73 6f        this.curso
2b590 72 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  rs = new Diction
2b5a0 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69  ary<IntPtr, SQLi
2b5b0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
2b5c0 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20  rsor>();..      
2b5d0 20 20 20 20 20 20 74 68 69 73 2e 66 75 6e 63 74        this.funct
2b5e0 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69 63 74 69  ions = new Dicti
2b5f0 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51  onary<string, SQ
2b600 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29 3b  LiteFunction>();
2b610 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2b620 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2b630 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b680 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2b690 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d  egion Internal M
2b6a0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2b6b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2b6c0 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73         /// Calls
2b6d0 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
2b6e0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2b6f0 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 72 65 61  in order to crea
2b700 74 65 20 61 20 6e 65 77 0d 0a 20 20 20 20 20 20  te a new..      
2b710 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c 65    /// disposable
2b720 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69   module containi
2b730 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  ng the implement
2b740 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75  ation of a virtu
2b750 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
2b760 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2b770 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2b780 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22  param name="pDb"
2b790 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2b7a0 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62 61  he native databa
2b7b0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f  se connection po
2b7c0 69 6e 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20  inter to use... 
2b7d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2b7e0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2b7f0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2b800 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
2b810 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
2b820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2b830 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2b840 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43 72  internal bool Cr
2b850 65 61 74 65 44 69 73 70 6f 73 61 62 6c 65 4d 6f  eateDisposableMo
2b860 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
2b870 20 20 20 49 6e 74 50 74 72 20 70 44 62 0d 0a 20     IntPtr pDb.. 
2b880 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2b890 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b8a0 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 61       if (disposa
2b8b0 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74  bleModule != Int
2b8c0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2b8d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2b8e0 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  n true;....     
2b8f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e         IntPtr pN
2b900 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ame = IntPtr.Zer
2b910 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
2b920 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2b930 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b940 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 53 51        pName = SQ
2b950 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
2b960 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
2b970 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
2b980 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2b990 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2b9a0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74  lite3_module nat
2b9b0 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20  iveModule =..   
2b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9d0 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
2b9e0 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  odule();....    
2b9f0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 74              dest
2ba00 72 6f 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20  royModule = new 
2ba10 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2ba20 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75  ods.xDestroyModu
2ba30 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2ba40 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f           xDestro
2ba50 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66  yModule);....#if
2ba60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2ba70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2ba80 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
2ba90 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d  posableModule =.
2baa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bab0 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
2bac0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2bad0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2bae0 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  le_module(..    
2baf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb00 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20      pDb, pName, 
2bb10 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ref nativeModule
2bb20 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64  , IntPtr.Zero, d
2bb30 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a  estroyModule);..
2bb40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bb50 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f 73    return (dispos
2bb60 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
2bb70 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c  tPtr.Zero);..#el
2bb80 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
2bb90 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
2bba0 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d       disposableM
2bbb0 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  odule =..       
2bbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
2bbd0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2bbe0 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  .sqlite3_create_
2bbf0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2bc00 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20  e_interop(..    
2bc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 41     pDb, pName, A
2bc30 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64  llocateNativeMod
2bc40 75 6c 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a 20  uleInterop(),.. 
2bc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc60 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2bc70 6c 65 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61 74  le.iVersion, nat
2bc80 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2bc90 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2bca0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2bcb0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
2bcc0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2bcd0 42 65 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20 20  BestIndex,..    
2bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcf0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2bd00 78 44 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61 74  xDisconnect, nat
2bd10 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2bd20 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
2bd30 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2bd40 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c 20  veModule.xOpen, 
2bd50 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  nativeModule.xCl
2bd60 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ose,..          
2bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2bd80 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
2bd90 72 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  r, nativeModule.
2bda0 78 4e 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  xNext,..        
2bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2bdc0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
2bdd0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2bde0 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20  Column,..       
2bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be00 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2be10 77 49 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  wId, nativeModul
2be20 65 2e 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20  e.xUpdate,..    
2be30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be40 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2be50 78 42 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d 6f  xBegin, nativeMo
2be60 64 75 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20 20  dule.xSync,..   
2be70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be80 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2be90 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76 65  .xCommit, native
2bea0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2beb0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2bec0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2bed0 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
2bee0 74 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75  tion, nativeModu
2bef0 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20 20  le.xRename,..   
2bf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf10 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2bf20 2e 78 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61 74  .xSavepoint, nat
2bf30 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2bf40 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
2bf50 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2bf60 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2bf70 63 6b 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ckTo, IntPtr.Zer
2bf80 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65  o, destroyModule
2bf90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2bfa0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 69        return (di
2bfb0 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21  sposableModule !
2bfc0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2bfd0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2bfe0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
2bff0 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
2c000 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
2c010 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2c020 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2c030 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
2c040 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c050 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61           if (pNa
2c060 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  me != IntPtr.Zer
2c070 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2c080 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c090 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2c0a0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61  eMemory.Free(pNa
2c0b0 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
2c0c0 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20            pName 
2c0d0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
2c0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2c100 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2c110 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2c120 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c170 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2c180 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
2c190 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
2c1a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c1b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
2c1c0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
2c1d0 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
2c1e0 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20  re library when 
2c1f0 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
2c200 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61      /// module a
2c210 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2c220 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2c230 6e 63 65 20 69 73 20 62 65 69 6e 67 20 64 65 73  nce is being des
2c240 74 72 6f 79 65 64 20 64 75 65 0d 0a 20 20 20 20  troyed due..    
2c250 20 20 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20 70      /// to its p
2c260 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
2c270 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20 20   being closed.  
2c280 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20 63  It may also be c
2c290 61 6c 6c 65 64 20 62 79 0d 0a 20 20 20 20 20 20  alled by..      
2c2a0 20 20 2f 2f 2f 20 74 68 65 20 22 76 74 73 68 69    /// the "vtshi
2c2b0 6d 22 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68 65  m" module if/whe
2c2c0 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64 69  n the sqlite3_di
2c2d0 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66  spose_module() f
2c2e0 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  unction..       
2c2f0 20 2f 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e 0d   /// is called..
2c300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2c310 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c320 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2c330 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
2c340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2c350 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
2c360 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
2c370 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
2c380 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73  odule, as it was
2c390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
2c3a0 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
2c3b0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2c3c0 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
2c3d0 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63  e module instanc
2c3e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
2c3f0 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20  as created...   
2c400 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2c410 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2c420 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79  te void xDestroy
2c430 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  Module(..       
2c440 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69       IntPtr pCli
2c450 65 6e 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20 55  entData /* NOT U
2c460 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
2c470 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
2c480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c4a0 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
2c4b0 6f 69 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65 20  oint, just make 
2c4c0 73 75 72 65 20 74 68 61 74 20 74 68 69 73 20 6e  sure that this n
2c4d0 61 74 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20 20  ative module..  
2c4e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2c4f0 20 20 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f 74     handle is not
2c500 20 72 65 75 73 65 64 2c 20 6e 6f 72 20 70 61 73   reused, nor pas
2c510 73 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61 74  sed into the nat
2c520 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
2c530 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2c540 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
2c550 28 29 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74 65  () function late
2c560 72 20 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e 0d  r (i.e. if/when.
2c570 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
2c580 20 20 20 20 20 20 74 68 65 20 44 69 73 70 6f 73        the Dispos
2c590 65 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 74 68  e() method of th
2c5a0 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2c5b0 63 65 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d 0a  ce is called)...
2c5c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2c5d0 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
2c5e0 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20 49  osableModule = I
2c5f0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2c600 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2c610 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2c660 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2c670 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2c680 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75  Creates and retu
2c690 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  rns the native s
2c6a0 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
2c6b0 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
2c6c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
2c6d0 6e 66 69 67 75 72 65 64 20 28 6f 72 20 64 65 66  nfigured (or def
2c6e0 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d  ault) <see cref=
2c6f0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c700 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
2c710 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20    /// interface 
2c720 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
2c730 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2c740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c750 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2c760 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2c770 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2c780 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2c790 73 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67 75  sing the configu
2c7a0 72 65 64 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  red (or..       
2c7b0 20 2f 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c 73   /// default) <s
2c7c0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c7d0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
2c7e0 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   interface..    
2c7f0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
2c800 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
2c810 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2c820 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2c830 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2c840 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2c850 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  ule AllocateNati
2c860 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2c870 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c880 20 20 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63 61     return Alloca
2c890 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 47  teNativeModule(G
2c8a0 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d  etNativeModuleIm
2c8b0 70 6c 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  pl());..        
2c8c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c910 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
2c920 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2c930 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f  EWORK..        /
2c940 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c950 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
2c960 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  s and returns a 
2c970 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62 74  memory block obt
2c980 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53  ained from the S
2c990 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
2c9a0 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20      /// library 
2c9b0 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2c9c0 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2c9d0 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2c9e0 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20  e for this..    
2c9f0 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
2ca00 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e  nstance when run
2ca10 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54  ning on the .NET
2ca20 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
2ca30 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rk...        ///
2ca40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2ca50 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2ca60 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2ca70 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2ca80 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65  er to the native
2ca90 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2caa0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
2cab0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2cac0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
2cad0 61 74 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63  ate IntPtr Alloc
2cae0 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  ateNativeModuleI
2caf0 6e 74 65 72 6f 70 28 29 0d 0a 20 20 20 20 20 20  nterop()..      
2cb00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2cb10 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75   if (pNativeModu
2cb20 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
2cb30 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2cb40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2cb50 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2cb60 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
2cb70 4e 6f 20 65 61 73 79 20 77 61 79 20 74 6f 20 64  No easy way to d
2cb80 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a  etermine the siz
2cb90 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
2cba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cbb0 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2cbc0 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2cbd0 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
2cbe0 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
2cbf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2cc00 20 20 20 20 20 43 6f 6d 70 61 63 74 20 46 72 61       Compact Fra
2cc10 6d 65 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f 72  mework; therefor
2cc20 65 2c 20 6a 75 73 74 20 62 61 73 65 20 74 68 65  e, just base the
2cc30 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20   size..         
2cc40 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2cc50 6f 6e 20 77 68 61 74 20 77 65 20 6b 6e 6f 77 3a  on what we know:
2cc60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc70 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2cc80 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54        //       T
2cc90 68 65 72 65 20 69 73 20 6f 6e 65 20 69 6e 74 65  here is one inte
2cca0 67 65 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ger member...   
2ccb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2ccc0 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65 20        There are 
2ccd0 32 32 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  22 function poin
2cce0 74 65 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20 20  ter members...  
2ccf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2cd00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd10 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20    pNativeModule 
2cd20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
2cd30 6c 6c 6f 63 61 74 65 28 32 33 20 2a 20 49 6e 74  llocate(23 * Int
2cd40 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
2cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2cd60 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20   (pNativeModule 
2cd70 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
2cd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cd90 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f       throw new O
2cda0 75 74 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70 74  utOfMemoryExcept
2cdb0 69 6f 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f 64  ion("sqlite3_mod
2cdc0 75 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ule");..        
2cdd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2cde0 20 20 20 20 20 72 65 74 75 72 6e 20 70 4e 61 74       return pNat
2cdf0 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  iveModule;..    
2ce00 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
2ce10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ce20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2ce70 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ce80 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
2ce90 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  nd returns the n
2cea0 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64  ative sqlite_mod
2ceb0 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73  ule structure us
2cec0 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
2ced0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
2cee0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2cef0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
2cf00 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
2cf10 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
2cf20 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2cf30 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2cf40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2cf50 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
2cf60 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2cf70 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2cf80 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2cf90 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
2cfa0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2cfb0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
2cfc0 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
2cfd0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2cfe0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2cff0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2d000 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  The native sqlit
2d010 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
2d020 72 65 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  re using the spe
2d030 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  cified..        
2d040 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
2d050 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2d060 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65  le" /> interface
2d070 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2d080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2d090 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2d0a0 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
2d0b0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2d0c0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c  lite3_module All
2d0d0 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  ocateNativeModul
2d0e0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2d0f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d100 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
2d110 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2d120 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d130 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d    nativeModule =
2d140 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2d150 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2d160 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20 20  _module();..    
2d170 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2d180 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20  dule.iVersion = 
2d190 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72  DefaultModuleVer
2d1a0 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sion;....       
2d1b0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2d1c0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2d1d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d1e0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d1f0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20  odule.xCreate = 
2d200 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2d210 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28  Methods.xCreate(
2d220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d230 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72 65       module.xCre
2d240 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
2d250 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d260 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d  odule.xConnect =
2d270 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2d280 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63  eMethods.xConnec
2d290 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2d2a0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2d2b0 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  Connect);....   
2d2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d2d0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
2d2e0 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
2d2f0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2d300 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d320 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
2d330 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
2d340 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2d350 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2d360 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d370 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2d380 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2d390 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d3a0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b  le.xDisconnect);
2d3b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d3c0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d3d0 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20  .xDestroy = new 
2d3e0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2d3f0 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20  ods.xDestroy(.. 
2d400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d410 20 20 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72     module.xDestr
2d420 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  oy);....        
2d430 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2d440 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77  dule.xOpen = new
2d450 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2d460 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20  hods.xOpen(..   
2d470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d480 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d   module.xOpen);.
2d490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d4a0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2d4b0 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
2d4c0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2d4d0 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  .xClose(..      
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2d4f0 64 75 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d  dule.xClose);...
2d500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d510 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2d520 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
2d530 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2d540 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2d550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2d560 64 75 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d 0a  dule.xFilter);..
2d570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d580 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2d590 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
2d5a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2d5b0 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
2d5c0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d5d0 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  e.xNext);....   
2d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d5f0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
2d600 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2d610 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d 6f  eMethods.xEof(mo
2d620 64 75 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20  dule.xEof);.... 
2d630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2d640 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
2d650 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  umn = new Unsafe
2d660 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2d670 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
2d680 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d690 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a  le.xColumn);....
2d6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6b0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2d6c0 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  wId = new Unsafe
2d6d0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2d6e0 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20  owId(..         
2d6f0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d700 65 2e 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  e.xRowId);....  
2d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2d720 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
2d730 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
2d740 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70  ativeMethods.xUp
2d750 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  date(..         
2d760 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d770 65 2e 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20  e.xUpdate);.... 
2d780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2d790 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
2d7a0 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  in = new UnsafeN
2d7b0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
2d7c0 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
2d7d0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2d7e0 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20  .xBegin);....   
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d800 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20  iveModule.xSync 
2d810 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d820 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28  veMethods.xSync(
2d830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d840 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 79        module.xSy
2d850 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nc);....        
2d860 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2d870 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e  dule.xCommit = n
2d880 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d890 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d  ethods.xCommit(.
2d8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d8b0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d       module.xCom
2d8c0 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  mit);....       
2d8d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d8e0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20  odule.xRollback 
2d8f0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d900 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62  veMethods.xRollb
2d910 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
2d920 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2d930 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a  .xRollback);....
2d940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d950 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
2d960 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77  ndFunction = new
2d970 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2d980 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69  hods.xFindFuncti
2d990 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2d9a0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2d9b0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d  xFindFunction);.
2d9c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d9d0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2d9e0 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e  xRename = new Un
2d9f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2da00 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  s.xRename(..    
2da10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29 3b  module.xRename);
2da30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2da40 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2da50 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65  .xSavepoint = ne
2da60 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2da70 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74  thods.xSavepoint
2da80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2da90 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53         module.xS
2daa0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
2dab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2dac0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2dad0 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ase = new Unsafe
2dae0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2daf0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
2db00 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2db10 75 6c 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d 0a  ule.xRelease);..
2db20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2db30 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2db40 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
2db50 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2db60 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
2db70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2db80 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
2db90 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20  ollbackTo);..   
2dba0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2dbb0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
2dbc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2dbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2dbe0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2dbf0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2dc00 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65  tiveMethods.xCre
2dc10 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
2dc20 20 20 20 20 20 20 20 20 20 20 78 43 72 65 61 74            xCreat
2dc30 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2dc40 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2dc50 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e  ule.xConnect = n
2dc60 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2dc70 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28  ethods.xConnect(
2dc80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dc90 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 29 3b        xConnect);
2dca0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dcb0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2dcc0 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65  .xBestIndex = ne
2dcd0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2dce0 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78  thods.xBestIndex
2dcf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2dd00 20 20 20 20 20 20 20 78 42 65 73 74 49 6e 64 65         xBestInde
2dd10 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
2dd20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2dd30 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2dd40 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2dd50 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2dd60 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2dd70 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69 73              xDis
2dd80 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  connect);....   
2dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2dda0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2ddb0 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  oy = new UnsafeN
2ddc0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
2ddd0 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
2dde0 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65 73              xDes
2ddf0 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  troy);....      
2de00 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2de10 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
2de20 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2de30 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f 70  ethods.xOpen(xOp
2de40 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  en);..          
2de50 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2de60 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20  le.xClose = new 
2de70 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2de80 6f 64 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f 73  ods.xClose(xClos
2de90 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2dea0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2deb0 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65  ule.xFilter = ne
2dec0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2ded0 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a  thods.xFilter(..
2dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2def0 20 20 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d      xFilter);...
2df00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2df10 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e   nativeModule.xN
2df20 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ext = new Unsafe
2df30 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e  NativeMethods.xN
2df40 65 78 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20 20  ext(xNext);..   
2df50 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2df60 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
2df70 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2df80 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 78 45  eMethods.xEof(xE
2df90 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
2dfa0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2dfb0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e  dule.xColumn = n
2dfc0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2dfd0 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d  ethods.xColumn(.
2dfe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dff0 20 20 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a       xColumn);..
2e000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e010 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e020 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61  RowId = new Unsa
2e030 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e040 78 52 6f 77 49 64 28 78 52 6f 77 49 64 29 3b 0d  xRowId(xRowId);.
2e050 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e060 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2e070 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e  xUpdate = new Un
2e080 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e090 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  s.xUpdate(..    
2e0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0b0 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
2e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e0d0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
2e0e0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2e0f0 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69  iveMethods.xBegi
2e100 6e 28 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20 20  n(xBegin);..    
2e110 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2e120 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d  veModule.xSync =
2e130 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e140 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 78  eMethods.xSync(x
2e150 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Sync);....      
2e160 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e170 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d  Module.xCommit =
2e180 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e190 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74  eMethods.xCommit
2e1a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e1b0 20 20 20 20 20 20 20 78 43 6f 6d 6d 69 74 29 3b         xCommit);
2e1c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e1d0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e1e0 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77  .xRollback = new
2e1f0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e200 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d  hods.xRollback(.
2e210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e220 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29 3b       xRollback);
2e230 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e240 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e250 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d  .xFindFunction =
2e260 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e270 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75  eMethods.xFindFu
2e280 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
2e290 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69               xFi
2e2a0 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  ndFunction);....
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2c0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  nativeModule.xRe
2e2d0 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  name = new Unsaf
2e2e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2e2f0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
2e300 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65               xRe
2e310 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
2e320 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e330 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
2e340 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
2e350 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76  tiveMethods.xSav
2e360 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
2e370 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53 61               xSa
2e380 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20  vepoint);....   
2e390 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e3a0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2e3b0 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
2e3c0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65  ativeMethods.xRe
2e3d0 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
2e3e0 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65 6c              xRel
2e3f0 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
2e400 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e410 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2e420 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  To = new UnsafeN
2e430 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2e440 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
2e450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2e460 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20  RollbackTo);..  
2e470 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2e480 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e490 6e 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d  n nativeModule;.
2e4a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2e4b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2e500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2e510 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2e520 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 63 6f  /// Creates a co
2e530 70 79 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  py of the specif
2e540 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
2e550 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
2e560 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e570 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20  sqlite3_module" 
2e580 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
2e590 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce,..        ///
2e5a0 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 20 69   using default i
2e5b0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66  mplementations f
2e5c0 6f 72 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64  or the contained
2e5d0 20 64 65 6c 65 67 61 74 65 73 20 77 68 65 6e 0d   delegates when.
2e5e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63  .        /// nec
2e5f0 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  essary...       
2e600 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2e610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2e620 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
2e630 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2e640 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 55  The <see cref="U
2e650 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e660 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2e670 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  e" /> object..  
2e680 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
2e690 63 65 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20 20  ce to copy...   
2e6a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2e6b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2e6c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2e6d0 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
2e6e0 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
2e6f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2e700 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20  ite3_module" /> 
2e710 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
2e720 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
2e730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2e740 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
2e750 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
2e760 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2e770 65 33 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e 61  e3_module CopyNa
2e780 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  tiveModule(..   
2e790 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2e7a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2e7b0 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75  ite3_module modu
2e7c0 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
2e7d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2e7e0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2e7f0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2e800 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65 77  lite3_module new
2e810 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
2e820 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
2e830 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e840 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2e850 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2e860 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56 65     newModule.iVe
2e870 72 73 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69  rsion = module.i
2e880 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20  Version;....    
2e890 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2e8a0 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20  e.xCreate = new 
2e8b0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e8c0 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ods.xCreate(..  
2e8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2e8e0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 21 3d  odule.xCreate !=
2e8f0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2e900 78 43 72 65 61 74 65 20 3a 20 78 43 72 65 61 74  xCreate : xCreat
2e910 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2e920 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f     newModule.xCo
2e930 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
2e940 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e950 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
2e960 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2e970 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20 6e  le.xConnect != n
2e980 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
2e990 6f 6e 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65 63  onnect : xConnec
2e9a0 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
2e9b0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65     newModule.xBe
2e9c0 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e  stIndex = new Un
2e9d0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e9e0 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  s.xBestIndex(.. 
2e9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2ea00 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
2ea10 78 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  x != null) ? mod
2ea20 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3a  ule.xBestIndex :
2ea30 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d   xBestIndex);...
2ea40 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2ea50 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
2ea60 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
2ea70 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69  ativeMethods.xDi
2ea80 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
2ea90 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2eaa0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 21  le.xDisconnect !
2eab0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2eac0 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a  .xDisconnect :..
2ead0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eae0 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  xDisconnect);...
2eaf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2eb00 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  Module.xDestroy 
2eb10 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2eb20 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72  veMethods.xDestr
2eb30 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
2eb40 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 65       (module.xDe
2eb50 73 74 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20 3f  stroy != null) ?
2eb60 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79   module.xDestroy
2eb70 20 3a 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d   : xDestroy);...
2eb80 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2eb90 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
2eba0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2ebb0 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20  ethods.xOpen(.. 
2ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2ebd0 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d 20  module.xOpen != 
2ebe0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2ebf0 4f 70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a  Open : xOpen);..
2ec00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2ec10 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d  wModule.xClose =
2ec20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ec30 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28  eMethods.xClose(
2ec40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ec50 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65    (module.xClose
2ec60 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
2ec70 6c 65 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c 6f  le.xClose : xClo
2ec80 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
2ec90 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46      newModule.xF
2eca0 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
2ecb0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ecc0 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2ecd0 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2ece0 65 2e 78 46 69 6c 74 65 72 20 21 3d 20 6e 75 6c  e.xFilter != nul
2ecf0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6c  l) ? module.xFil
2ed00 74 65 72 20 3a 20 78 46 69 6c 74 65 72 29 3b 0d  ter : xFilter);.
2ed10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2ed20 65 77 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d  ewModule.xNext =
2ed30 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ed40 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d  eMethods.xNext(.
2ed50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ed60 20 28 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 21   (module.xNext !
2ed70 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2ed80 2e 78 4e 65 78 74 20 3a 20 78 4e 65 78 74 29 3b  .xNext : xNext);
2ed90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2eda0 6e 65 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  newModule.xEof =
2edb0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2edc0 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d 0a  eMethods.xEof(..
2edd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ede0 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d 20  (module.xEof != 
2edf0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2ee00 45 6f 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a  Eof : xEof);....
2ee10 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2ee20 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
2ee30 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2ee40 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
2ee50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ee60 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d    (module.xColum
2ee70 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  n != null) ? mod
2ee80 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78 43  ule.xColumn : xC
2ee90 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  olumn);....     
2eea0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2eeb0 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e  .xRowId = new Un
2eec0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2eed0 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  s.xRowId(..     
2eee0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2eef0 6c 65 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75 6c  le.xRowId != nul
2ef00 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 77  l) ? module.xRow
2ef10 49 64 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a 0d  Id : xRowId);...
2ef20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2ef30 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
2ef40 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ef50 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
2ef60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ef70 20 20 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64 61     (module.xUpda
2ef80 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  te != null) ? mo
2ef90 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3a 20 78  dule.xUpdate : x
2efa0 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20  Update);....    
2efb0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2efc0 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55  e.xBegin = new U
2efd0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2efe0 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  ds.xBegin(..    
2eff0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2f000 75 6c 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e 75  ule.xBegin != nu
2f010 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65  ll) ? module.xBe
2f020 67 69 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d 0a  gin : xBegin);..
2f030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2f040 77 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20  wModule.xSync = 
2f050 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f060 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a  Methods.xSync(..
2f070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f080 28 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21 3d  (module.xSync !=
2f090 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2f0a0 78 53 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b 0d  xSync : xSync);.
2f0b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2f0c0 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  ewModule.xCommit
2f0d0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2f0e0 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d  iveMethods.xComm
2f0f0 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
2f100 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f       (module.xCo
2f110 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  mmit != null) ? 
2f120 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3a  module.xCommit :
2f130 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20   xCommit);....  
2f140 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2f150 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20  ule.xRollback = 
2f160 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f170 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63  Methods.xRollbac
2f180 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
2f190 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c      (module.xRol
2f1a0 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 3f  lback != null) ?
2f1b0 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
2f1c0 6b 20 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d  k : xRollback);.
2f1d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2f1e0 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ewModule.xFindFu
2f1f0 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
2f200 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2f210 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
2f220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f230 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75   (module.xFindFu
2f240 6e 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20  nction != null) 
2f250 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ? module.xFindFu
2f260 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20 20  nction :..      
2f270 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46            xFindF
2f280 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  unction);....   
2f290 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
2f2a0 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77  le.xRename = new
2f2b0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f2c0 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20  hods.xRename(.. 
2f2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2f2e0 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 21  module.xRename !
2f2f0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2f300 2e 78 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e 61  .xRename : xRena
2f310 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
2f320 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53      newModule.xS
2f330 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
2f340 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f350 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
2f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f370 28 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  (module.xSavepoi
2f380 6e 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  nt != null) ? mo
2f390 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
2f3a0 3a 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  : xSavepoint);..
2f3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2f3c0 77 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  wModule.xRelease
2f3d0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2f3e0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65  iveMethods.xRele
2f3f0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
2f400 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52        (module.xR
2f410 65 6c 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29 20  elease != null) 
2f420 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  ? module.xReleas
2f430 65 20 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a  e : xRelease);..
2f440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2f450 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  wModule.xRollbac
2f460 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
2f470 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2f480 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
2f490 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2f4a0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  ule.xRollbackTo 
2f4b0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2f4c0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a 0d  e.xRollbackTo :.
2f4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4e0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a   xRollbackTo);..
2f4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2f500 74 75 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b 0d  turn newModule;.
2f510 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2f520 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2f570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2f580 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2f590 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66  /// Calls one of
2f5a0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
2f5b0 6c 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  le initializatio
2f5c0 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  n methods...    
2f5d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2f5e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2f5f0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72 65  <param name="cre
2f600 61 74 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ate">..        /
2f610 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63  // Non-zero to c
2f620 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72 65  all the <see cre
2f630 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
2f640 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
2f650 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
2f660 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69 73  method; otherwis
2f670 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  e, the <see cref
2f680 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
2f690 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
2f6a0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
2f6b0 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63  method will be c
2f6c0 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  alled...        
2f6d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2f6e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2f6f0 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20   name="pDb">..  
2f700 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2f710 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f  tive database co
2f720 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e  nnection handle.
2f730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2f740 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2f750 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2f760 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20  "pAux">..       
2f770 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
2f780 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  l native pointer
2f790 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73 20   value that was 
2f7a0 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d  provided to the.
2f7b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
2f7c0 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
2f7d0 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72  le(), sqlite3_cr
2f7e0 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29  eate_module_v2()
2f7f0 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
2f800 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
2f810 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2f820 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  e() functions...
2f830 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2f840 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2f850 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2f860 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgc">..        /
2f870 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
2f880 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20   arguments from 
2f890 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
2f8a0 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
2f8b0 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
2f8c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2f8d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2f8e0 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
2f8f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
2f900 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75  y of string argu
2f910 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43  ments from the C
2f920 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
2f930 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  BLE..        ///
2f940 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
2f950 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2f960 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2f970 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2f980 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
2f990 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
2f9a0 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
2f9b0 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
2f9c0 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e  o point to the n
2f9d0 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ewly..        //
2f9e0 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69 76 65  / created native
2f9f0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
2fa00 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
2fa10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2fa20 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2fa30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2fa40 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  "pError">..     
2fa50 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
2fa60 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ure, this parame
2fa70 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
2fa80 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
2fa90 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20   the error..    
2faa0 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c      /// message,
2fab0 20 77 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c   with the underl
2fac0 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69  ying memory havi
2fad0 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64  ng been obtained
2fae0 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
2faf0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d     /// sqlite3_m
2fb00 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e  alloc() function
2fb10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2fb20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2fb30 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2fb40 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
2fb50 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
2fb60 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
2fb70 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2fb80 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
2fb90 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2fba0 6f 64 65 20 43 72 65 61 74 65 4f 72 43 6f 6e 6e  ode CreateOrConn
2fbb0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
2fbc0 20 20 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d 0a    bool create,..
2fbd0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2fbe0 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
2fbf0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
2fc00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
2fc10 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
2fc20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
2fc30 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
2fc40 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
2fc50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
2fc60 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
2fc70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2fc80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2fc90 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2fca0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2fcb0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
2fcc0 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51  ng fileName = SQ
2fcd0 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e  LiteString.Strin
2fce0 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
2fcf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fd00 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
2fd10 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2fd20 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44  3_db_filename(pD
2fd30 62 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  b, IntPtr.Zero))
2fd40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2fd50 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
2fd60 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
2fd70 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51  nection = new SQ
2fd80 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d  LiteConnection(.
2fd90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fda0 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 66 69           pDb, fi
2fdb0 6c 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d  leName, false)).
2fdc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fdd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2fde0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
2fdf0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
2fe00 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
2fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
2fe20 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c  ring error = nul
2fe30 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
2fe40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 63            if ((c
2fe50 72 65 61 74 65 20 26 26 20 43 72 65 61 74 65 28  reate && Create(
2fe60 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78  connection, pAux
2fe70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2fe80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2fe90 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
2fea0 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53  ngArrayFromUtf8S
2feb0 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72 67  izeAndIntPtr(arg
2fec0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
2fed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fee0 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c 65  argv), ref table
2fef0 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20  , ref error) == 
2ff00 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
2ff10 4f 6b 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  Ok) ||..        
2ff20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff30 28 21 63 72 65 61 74 65 20 26 26 20 43 6f 6e 6e  (!create && Conn
2ff40 65 63 74 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ect(connection, 
2ff50 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
2ff60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff70 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e     SQLiteString.
2ff80 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55  StringArrayFromU
2ff90 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72  tf8SizeAndIntPtr
2ffa0 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20  (argc,..        
2ffb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffc0 20 20 20 20 61 72 67 76 29 2c 20 72 65 66 20 74      argv), ref t
2ffd0 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f 72 29  able, ref error)
2ffe0 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
2fff0 6f 64 65 2e 4f 6b 29 29 0d 0a 20 20 20 20 20 20  ode.Ok))..      
30000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
30010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30020 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
30030 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
30040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30070 20 20 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c      pVtab = Tabl
30080 65 54 6f 49 6e 74 50 74 72 28 74 61 62 6c 65 29  eToIntPtr(table)
30090 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
300a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
300b0 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
300c0 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
300d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
300f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
30100 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
30110 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30130 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
30140 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
30150 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
30160 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
30170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30180 20 20 20 20 20 20 20 20 22 6e 6f 20 74 61 62 6c          "no tabl
30190 65 20 77 61 73 20 63 72 65 61 74 65 64 22 29 3b  e was created");
301a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
301b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
301c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
301e0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
301f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30200 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
30220 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
30230 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
30240 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d  mString(error);.
30250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30260 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30270 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30280 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30290 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
302a0 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54  eption e) /* NOT
302b0 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c  E: Must catch AL
302c0 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  L. */..         
302d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
302e0 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53        pError = S
302f0 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
30300 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
30310 28 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d  (e.ToString());.
30320 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
30330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
30340 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
30350 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
30360 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30370 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
303c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
303d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
303e0 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65  Calls one of the
303f0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66   virtual table f
30400 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68  inalization meth
30410 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
30420 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 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 64 65 73 74 72 6f 79 22 3e   name="destroy">
30450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
30460 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74  n-zero to call t
30470 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
30480 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
30490 6c 65 2e 44 65 73 74 72 6f 79 22 20 2f 3e 0d 0a  le.Destroy" />..
304a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
304b0 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  od; otherwise, t
304c0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
304d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
304e0 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
304f0 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
30500 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 0d 0a 20  ethod will be.. 
30510 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65         /// calle
30520 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
30530 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30540 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
30550 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
30560 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
30570 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
30580 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
30590 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
305a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
305b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
305c0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
305d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
305e0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
305f0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
30600 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
30610 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
30620 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
30630 6f 64 65 20 44 65 73 74 72 6f 79 4f 72 44 69 73  ode DestroyOrDis
30640 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
30650 20 20 20 20 20 20 62 6f 6f 6c 20 64 65 73 74 72        bool destr
30660 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
30670 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
30680 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
30690 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
306a0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
306b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
306c0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
306d0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
306e0 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  e = TableFromInt
306f0 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  Ptr(pVtab);.... 
30700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30710 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
30720 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
30730 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30740 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 64            if ((d
30750 65 73 74 72 6f 79 20 26 26 20 28 44 65 73 74 72  estroy && (Destr
30760 6f 79 28 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c  oy(table) == SQL
30770 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
30780 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
30790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 21                (!
307a0 64 65 73 74 72 6f 79 20 26 26 20 28 44 69 73 63  destroy && (Disc
307b0 6f 6e 6e 65 63 74 28 74 61 62 6c 65 29 20 3d 3d  onnect(table) ==
307c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
307d0 2e 4f 6b 29 29 29 0d 0a 20 20 20 20 20 20 20 20  .Ok)))..        
307e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
307f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30800 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
30810 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
30820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30830 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e 52          tables.R
30840 65 6d 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a 0d  emove(pVtab);...
30850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30860 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
30870 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
30880 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok;..           
30890 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
308a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
308b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
308c0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
308d0 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
308e0 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
308f0 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
30900 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30910 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
30930 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
30940 6f 69 6e 74 2c 20 74 68 65 72 65 20 69 73 20 6e  oint, there is n
30950 6f 20 77 61 79 20 74 6f 20 72 65 70 6f 72 74 20  o way to report 
30960 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  the error..     
30970 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
30980 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62 61      condition ba
30990 63 6b 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72  ck to the caller
309a0 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 75 73 65  ; therefore, use
309b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
309c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
309d0 6f 67 67 69 6e 67 20 66 61 63 69 6c 69 74 79 20  ogging facility 
309e0 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20  instead...      
309f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
30a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
30a10 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
30a20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30a30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4c 6f            if (Lo
30a40 67 45 78 63 65 70 74 69 6f 6e 73 4e 6f 54 68 72  gExceptionsNoThr
30a50 6f 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow)..           
30a60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a80 20 20 20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d      /* throw */.
30a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30aa0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
30ab0 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51  og.LogMessage(SQ
30ac0 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45  LiteBase.COR_E_E
30ad0 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20  XCEPTION,..     
30ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30af0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
30b00 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  iveMethods.Strin
30b10 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
30b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b30 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
30b40 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
30b50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
30b70 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e  Caught exception
30b80 20 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65 74 68   in \"{0}\" meth
30b90 6f 64 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  od: {1}",..     
30ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bb0 20 20 20 20 20 20 20 64 65 73 74 72 6f 79 20 3f         destroy ?
30bc0 20 22 78 44 65 73 74 72 6f 79 22 20 3a 20 22 78   "xDestroy" : "x
30bd0 44 69 73 63 6f 6e 6e 65 63 74 22 2c 20 65 29 29  Disconnect", e))
30be0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30bf0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30c00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30c10 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
30c20 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
30c30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30c40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
30c50 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
30c60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30c70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30c80 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
30c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
30ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30cb0 20 46 72 65 65 54 61 62 6c 65 28 70 56 74 61 62   FreeTable(pVtab
30cc0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
30cd0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
30ce0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
30cf0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
30d00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
30d10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
30d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
30d60 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
30d70 53 74 61 74 69 63 20 45 72 72 6f 72 20 48 61 6e  Static Error Han
30d80 64 6c 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74  dling Helper Met
30d90 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
30da0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
30db0 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65       /// Arrange
30dc0 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  s for the specif
30dd0 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ied error messag
30de0 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69  e to be placed i
30df0 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nto the..       
30e00 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65   /// zErrMsg fie
30e10 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f  ld of a sqlite3_
30e20 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
30e30 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20  ucture, freeing 
30e40 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
30e50 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20   existing error 
30e60 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e  message, if any.
30e70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
30e80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
30e90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
30ea0 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
30eb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
30ec0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
30ed0 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
30ee0 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75  instance to be u
30ef0 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
30f00 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
30f10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
30f20 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
30f30 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
30f40 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
30f50 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
30f60 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
30f70 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
30f80 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30f90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30fa0 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d  me="logErrors">.
30fb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
30fc0 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72  -zero if this er
30fd0 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75  ror message shou
30fe0 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65  ld also be logge
30ff0 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
31000 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
31010 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f  ef="SQLiteLog" /
31020 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  > class...      
31030 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
31040 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
31050 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65  am name="logExce
31060 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20  ptions">..      
31070 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
31080 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69  f caught excepti
31090 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ons should be lo
310a0 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a  gged using the..
310b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
310c0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67   cref="SQLiteLog
310d0 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
310e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
310f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
31100 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f  param name="erro
31110 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
31120 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61   The error messa
31130 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
31140 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
31150 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
31160 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
31170 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
31180 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
31190 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
311a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
311b0 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54 61 62  atic bool SetTab
311c0 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  leError(..      
311d0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
311e0 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20  le module,..    
311f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
31200 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
31210 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72     bool logError
31220 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
31230 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f  bool logExceptio
31240 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns,..           
31250 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
31260 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
31270 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31280 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
31290 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
312a0 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 67           if (log
312b0 45 72 72 6f 72 73 29 0d 0a 20 20 20 20 20 20 20  Errors)..       
312c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
312d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312e0 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73  SQLiteLog.LogMes
312f0 73 61 67 65 28 53 51 4c 69 74 65 45 72 72 6f 72  sage(SQLiteError
31300 43 6f 64 65 2e 45 72 72 6f 72 2c 0d 0a 20 20 20  Code.Error,..   
31310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31320 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
31330 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  eMethods.StringF
31340 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
31350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31360 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
31370 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
31380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31390 20 20 20 20 20 22 56 69 72 74 75 61 6c 20 74 61       "Virtual ta
313a0 62 6c 65 20 65 72 72 6f 72 3a 20 7b 30 7d 22 2c  ble error: {0}",
313b0 20 65 72 72 6f 72 29 29 3b 20 2f 2a 20 74 68 72   error)); /* thr
313c0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
313d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
313e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
313f0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
31400 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
31420 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
31430 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
31440 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63          bool suc
31450 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  cess = false;.. 
31460 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
31470 72 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49 6e  r pNewError = In
31480 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
31490 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
314a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
314b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
314c0 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74   (pVtab == IntPt
314d0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
314e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
314f0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
31500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
31510 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d  t offset = 0;...
31520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31530 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
31540 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
31550 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
31560 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
31570 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
31580 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
31590 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
315a0 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
315b0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
315c0 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
315d0 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
315e0 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
315f0 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
31600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31610 20 49 6e 74 50 74 72 20 70 4f 6c 64 45 72 72 6f   IntPtr pOldErro
31620 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  r = SQLiteMarsha
31630 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 56 74  l.ReadIntPtr(pVt
31640 61 62 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ab, offset);....
31650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31660 69 66 20 28 70 4f 6c 64 45 72 72 6f 72 20 21 3d  if (pOldError !=
31670 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
31680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
31690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
316a0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
316b0 72 79 2e 46 72 65 65 28 70 4f 6c 64 45 72 72 6f  ry.Free(pOldErro
316c0 72 29 3b 20 70 4f 6c 64 45 72 72 6f 72 20 3d 20  r); pOldError = 
316d0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
316e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316f0 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
31700 57 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61  WriteIntPtr(pVta
31710 62 2c 20 6f 66 66 73 65 74 2c 20 70 4f 6c 64 45  b, offset, pOldE
31720 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
31730 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31740 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
31750 28 65 72 72 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d  (error == null).
31760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31770 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
31780 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31790 20 20 20 20 20 70 4e 65 77 45 72 72 6f 72 20 3d       pNewError =
317a0 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74   SQLiteString.Ut
317b0 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
317c0 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20  ng(error);..    
317d0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
317e0 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
317f0 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66  ntPtr(pVtab, off
31800 73 65 74 2c 20 70 4e 65 77 45 72 72 6f 72 29 3b  set, pNewError);
31810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31820 20 20 73 75 63 63 65 73 73 20 3d 20 74 72 75 65    success = true
31830 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
31840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
31850 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
31860 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20  ) /* NOTE: Must 
31870 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20  catch ALL. */.. 
31880 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
318a0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
318b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
318c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
318d0 67 45 78 63 65 70 74 69 6f 6e 73 29 0d 0a 20 20  gExceptions)..  
318e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31900 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
31910 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67  iteLog.LogMessag
31920 65 28 53 51 4c 69 74 65 42 61 73 65 2e 43 4f 52  e(SQLiteBase.COR
31930 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a 20  _E_EXCEPTION,.. 
31940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31950 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
31960 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53  eNativeMethods.S
31970 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
31980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31990 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
319a0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
319b0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
319c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319d0 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65 70     "Caught excep
319e0 74 69 6f 6e 20 69 6e 20 5c 22 53 65 74 54 61 62  tion in \"SetTab
319f0 6c 65 45 72 72 6f 72 5c 22 20 6d 65 74 68 6f 64  leError\" method
31a00 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {0}",..       
31a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a20 20 20 20 20 20 65 29 29 3b 20 2f 2a 20 74 68 72       e)); /* thr
31a30 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
31a40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
31a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31a70 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
31a80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31aa0 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
31ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
31ae0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
31af0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31b00 20 20 20 20 20 69 66 20 28 21 73 75 63 63 65 73       if (!succes
31b10 73 20 26 26 20 28 70 4e 65 77 45 72 72 6f 72 20  s && (pNewError 
31b20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  != IntPtr.Zero))
31b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31b40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31b50 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
31b60 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 65 77 45  emory.Free(pNewE
31b70 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
31b80 20 20 20 20 20 20 20 20 20 20 20 20 70 4e 65 77              pNew
31b90 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a  Error = IntPtr.Z
31ba0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
31bb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31bc0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
31bd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 75 63        return suc
31be0 63 65 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d  cess;..        }
31bf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
31c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
31c50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
31c60 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67        /// Arrang
31c70 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  es for the speci
31c80 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61  fied error messa
31c90 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20  ge to be placed 
31ca0 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  into the..      
31cb0 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69    /// zErrMsg fi
31cc0 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33  eld of a sqlite3
31cd0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
31ce0 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67  ructure, freeing
31cf0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
31d00 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72  / existing error
31d10 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79   message, if any
31d20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
31d30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
31d40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
31d50 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
31d60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
31d70 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
31d80 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
31d90 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
31da0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
31db0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
31dc0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
31dd0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
31de0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
31df0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
31e00 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
31e10 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
31e20 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20   used to..      
31e30 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68 65    /// lookup the
31e40 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
31e50 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
31e60 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
31e70 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
31e80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
31e90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31ea0 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73   name="logErrors
31eb0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
31ec0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
31ed0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73   error message s
31ee0 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f  hould also be lo
31ef0 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a  gged using the..
31f00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
31f10 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67   cref="SQLiteLog
31f20 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
31f30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
31f40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
31f50 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45  param name="logE
31f60 78 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20  xceptions">..   
31f70 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
31f80 6f 20 69 66 20 63 61 75 67 68 74 20 65 78 63 65  o if caught exce
31f90 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65  ptions should be
31fa0 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68   logged using th
31fb0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
31fc0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
31fd0 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a  Log" /> class...
31fe0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
31ff0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32000 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65  / <param name="e
32010 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rror">..        
32020 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65  /// The error me
32030 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20  ssage...        
32040 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32050 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
32060 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
32070 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73   Non-zero upon s
32080 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  uccess...       
32090 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
320a0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
320b0 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74   static bool Set
320c0 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20  TableError(..   
320d0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
320e0 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20  odule module,.. 
320f0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
32100 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
32110 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ble,..          
32120 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73    bool logErrors
32130 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
32140 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e  ool logException
32150 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
32160 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
32170 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
32180 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32190 20 20 20 20 69 66 20 28 74 61 62 6c 65 20 3d 3d      if (table ==
321a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
321b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
321c0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
321d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
321e0 62 20 3d 20 74 61 62 6c 65 2e 4e 61 74 69 76 65  b = table.Native
321f0 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Handle;....     
32200 20 20 20 20 20 20 20 69 66 20 28 70 56 74 61 62         if (pVtab
32210 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
32220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32230 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
32240 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
32250 65 74 75 72 6e 20 53 65 74 54 61 62 6c 65 45 72  eturn SetTableEr
32260 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ror(..          
32270 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70 56        module, pV
32280 74 61 62 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20  tab, logErrors, 
32290 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 65  logExceptions, e
322a0 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
322b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 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 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32310 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
32320 20 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e         /// Arran
32330 67 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63  ges for the spec
32340 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73  ified error mess
32350 61 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64  age to be placed
32360 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20   into the..     
32370 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66     /// zErrMsg f
32380 69 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65  ield of a sqlite
32390 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
323a0 74 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e  tructure, freein
323b0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
323c0 2f 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f  // existing erro
323d0 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e  r message, if an
323e0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
323f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
32400 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32410 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
32420 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
32430 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
32440 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
32450 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
32460 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
32470 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32480 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32490 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
324a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
324b0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
324c0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
324d0 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
324e0 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20  ved structure.. 
324f0 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 20         /// used 
32500 74 6f 20 67 65 74 20 74 68 65 20 6e 61 74 69 76  to get the nativ
32510 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
32520 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
32530 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  rived..        /
32540 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
32550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
32560 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
32570 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f   <param name="lo
32580 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20  gErrors">..     
32590 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
325a0 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65  if this error me
325b0 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73  ssage should als
325c0 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  o be logged usin
325d0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
325e0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
325f0 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
32600 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
32610 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
32620 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
32630 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  e="logExceptions
32640 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32650 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67  Non-zero if caug
32660 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68  ht exceptions sh
32670 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75  ould be logged u
32680 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
32690 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
326a0 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63  "SQLiteLog" /> c
326b0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
326c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
326d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
326e0 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
326f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65         /// The e
32700 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
32710 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
32720 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
32730 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
32740 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
32750 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
32760 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
32770 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
32780 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
32790 6f 6f 6c 20 53 65 74 43 75 72 73 6f 72 45 72 72  ool SetCursorErr
327a0 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
327b0 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
327c0 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  dule,..         
327d0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
327e0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
327f0 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d  bool logErrors,.
32800 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
32810 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  l logExceptions,
32820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
32830 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20  ring error..    
32840 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
32850 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32860 20 20 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d    if (pCursor ==
32870 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
32880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
32890 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
328a0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
328b0 74 72 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65  tr pVtab = Table
328c0 46 72 6f 6d 43 75 72 73 6f 72 28 6d 6f 64 75 6c  FromCursor(modul
328d0 65 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  e, pCursor);....
328e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
328f0 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
32900 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
32910 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
32920 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
32930 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54 61      return SetTa
32940 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
32950 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
32960 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72  e, pVtab, logErr
32970 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f  ors, logExceptio
32980 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ns, error);..   
32990 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
329a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
329b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
329f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
32a00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
32a10 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65  Arranges for the
32a20 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
32a30 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70   message to be p
32a40 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a  laced into the..
32a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72          /// zErr
32a60 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73  Msg field of a s
32a70 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32a80 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66  ved structure, f
32a90 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  reeing the..    
32aa0 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67      /// existing
32ab0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20   error message, 
32ac0 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
32ad0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
32ae0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
32af0 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
32b00 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32b10 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
32b20 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
32b30 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
32b40 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  to be used...   
32b50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32b60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32b70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73  param name="curs
32b80 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
32b90 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
32ba0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
32bb0 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62  bleCursor" /> ob
32bc0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73  ject instance us
32bd0 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  ed to..        /
32be0 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e 61  // lookup the na
32bf0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
32c00 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
32c10 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
32c20 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
32c30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32c40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32c50 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d  me="logErrors">.
32c60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
32c70 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72  -zero if this er
32c80 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75  ror message shou
32c90 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65  ld also be logge
32ca0 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
32cb0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
32cc0 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f  ef="SQLiteLog" /
32cd0 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  > class...      
32ce0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
32cf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
32d00 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65  am name="logExce
32d10 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20  ptions">..      
32d20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
32d30 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69  f caught excepti
32d40 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ons should be lo
32d50 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a  gged using the..
32d60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
32d70 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67   cref="SQLiteLog
32d80 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
32d90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32da0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32db0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f  param name="erro
32dc0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
32dd0 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61   The error messa
32de0 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
32df0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32e00 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
32e10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
32e20 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
32e30 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
32e40 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
32e50 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
32e60 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72  atic bool SetCur
32e70 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  sorError(..     
32e80 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
32e90 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
32ea0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
32eb0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
32ec0 72 20 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20  r cursor,..     
32ed0 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
32ee0 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
32ef0 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65      bool logExce
32f00 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20  ptions,..       
32f10 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f       string erro
32f20 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
32f30 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
32f40 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72           if (cur
32f50 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  sor == null)..  
32f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
32f70 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
32f80 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
32f90 72 20 70 43 75 72 73 6f 72 20 3d 20 63 75 72 73  r pCursor = curs
32fa0 6f 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b  or.NativeHandle;
32fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32fc0 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49  if (pCursor == I
32fd0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
32fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
32ff0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
33000 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
33010 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28   SetCursorError(
33020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33030 20 20 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f    module, pCurso
33040 72 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f  r, logErrors, lo
33050 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72  gExceptions, err
33060 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  or);..        }.
33070 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
33080 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  ion..        #en
33090 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
330a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
330b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
330f0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
33100 6f 74 65 63 74 65 64 20 4d 65 6d 62 65 72 73 0d  otected Members.
33110 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
33120 20 4d 6f 64 75 6c 65 20 48 65 6c 70 65 72 20 4d   Module Helper M
33130 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
33140 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
33150 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
33160 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
33170 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
33180 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
33190 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20  /> interface..  
331a0 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
331b0 65 6e 74 61 74 69 6f 6e 20 74 6f 20 62 65 20 75  entation to be u
331c0 73 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e  sed when creatin
331d0 67 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  g the native sql
331e0 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20  ite3_module..   
331f0 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
33200 72 65 2e 20 20 44 65 72 69 76 65 64 20 63 6c 61  re.  Derived cla
33210 73 73 65 73 20 6d 61 79 20 6f 76 65 72 72 69 64  sses may overrid
33220 65 20 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f  e this method to
33230 20 73 75 70 70 6c 79 20 61 6e 0d 0a 20 20 20 20   supply an..    
33240 20 20 20 20 2f 2f 2f 20 61 6c 74 65 72 6e 61 74      /// alternat
33250 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
33260 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72   for the <see cr
33270 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
33280 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
33290 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61       /// interfa
332a0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
332b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
332c0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
332d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
332e0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
332f0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
33300 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65  le" /> interface
33310 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
33320 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
33330 62 65 20 75 73 65 64 20 77 68 65 6e 20 70 6f 70  be used when pop
33340 75 6c 61 74 69 6e 67 20 74 68 65 20 6e 61 74 69  ulating the nati
33350 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
33360 65 20 73 74 72 75 63 74 75 72 65 2e 20 20 49 66  e structure.  If
33370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
33380 65 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65  e returned value
33390 20 69 73 20 6e 75 6c 6c 2c 20 74 68 65 20 70 72   is null, the pr
333a0 69 76 61 74 65 20 6d 65 74 68 6f 64 73 20 70 72  ivate methods pr
333b0 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20  ovided by the.. 
333c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
333d0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
333e0 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20 61 6e 64  le" /> class and
333f0 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65   relating to the
33400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
33410 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
33420 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
33430 20 69 6e 74 65 72 66 61 63 65 20 20 77 69 6c 6c   interface  will
33440 20 62 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20   be used to..   
33450 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 20       /// create 
33460 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 64 65  the necessary de
33470 6c 65 67 61 74 65 73 2e 0d 0a 20 20 20 20 20 20  legates...      
33480 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
33490 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
334a0 74 65 64 20 76 69 72 74 75 61 6c 20 49 53 51 4c  ted virtual ISQL
334b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20  iteNativeModule 
334c0 47 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  GetNativeModuleI
334d0 6d 70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  mpl()..        {
334e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
334f0 74 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f  turn null; /* NO
33500 54 45 3a 20 55 73 65 20 74 68 65 20 62 75 69 6c  TE: Use the buil
33510 74 2d 69 6e 20 64 65 66 61 75 6c 74 20 64 65 6c  t-in default del
33520 65 67 61 74 65 73 2e 20 2a 2f 0d 0a 20 20 20 20  egates. */..    
33530 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33540 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33580 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33590 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
335a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
335b0 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72  reates and retur
335c0 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ns the <see cref
335d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
335e0 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
335f0 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65     /// interface
33600 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
33610 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f  corresponding to
33620 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
33630 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
33640 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
33650 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
33660 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
33670 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
33680 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
33690 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
336a0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
336b0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
336c0 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
336d0 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ace implementati
336e0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  on..        /// 
336f0 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f  corresponding to
33700 20 74 68 65 20 63 75 72 72 65 6e 74 20 3c 73 65   the current <se
33710 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
33720 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d  dule" /> object.
33730 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
33740 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
33750 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
33760 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
33770 64 20 76 69 72 74 75 61 6c 20 49 53 51 4c 69 74  d virtual ISQLit
33780 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 43 72  eNativeModule Cr
33790 65 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  eateNativeModule
337a0 49 6d 70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20  Impl()..        
337b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
337c0 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
337d0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 74 68 69  NativeModule(thi
337e0 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
337f0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
33800 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
33810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33850 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
33860 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
33870 54 61 62 6c 65 20 48 65 6c 70 65 72 20 4d 65 74  Table Helper Met
33880 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
33890 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
338a0 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74       /// Allocat
338b0 65 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  es a native sqli
338c0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
338d0 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 20 72   structure and r
338e0 65 74 75 72 6e 73 20 61 0d 0a 20 20 20 20 20 20  eturns a..      
338f0 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69    /// native poi
33900 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20  nter to it...   
33910 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
33920 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33930 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
33940 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65      /// A native
33950 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61   pointer to a na
33960 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
33970 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
33980 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
33990 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
339a0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
339b0 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 41  virtual IntPtr A
339c0 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 0d 0a  llocateTable()..
339d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
339e0 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 20         int size 
339f0 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
33a00 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20  (typeof(..      
33a10 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
33a20 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
33a30 6c 69 74 65 33 5f 76 74 61 62 29 29 3b 0d 0a 0d  lite3_vtab));...
33a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
33a50 75 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  urn SQLiteMemory
33a60 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b  .Allocate(size);
33a70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
33a80 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
33ae0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
33af0 20 2f 2f 2f 20 5a 65 72 6f 73 20 6f 75 74 20 74   /// Zeros out t
33b00 68 65 20 66 69 65 6c 64 73 20 6f 66 20 61 20 6e  he fields of a n
33b10 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
33b20 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
33b30 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
33b40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
33b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
33b60 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
33b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
33b80 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
33b90 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  to the native sq
33ba0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
33bb0 65 64 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d  ed structure to.
33bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  .        /// zer
33bd0 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  o...        /// 
33be0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
33bf0 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
33c00 75 61 6c 20 76 6f 69 64 20 5a 65 72 6f 54 61 62  ual void ZeroTab
33c10 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
33c20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
33c30 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
33c40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33c50 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20 3d       if (pVtab =
33c60 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
33c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33c80 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
33c90 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
33ca0 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
33cb0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
33cc0 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
33cd0 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49  pVtab, offset, I
33ce0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
33cf0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
33d00 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
33d10 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
33d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33d30 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72    offset, IntPtr
33d40 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e  .Size, sizeof(in
33d50 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
33d60 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
33d70 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 56 74  l.WriteInt32(pVt
33d80 61 62 2c 20 6f 66 66 73 65 74 2c 20 30 29 3b 0d  ab, offset, 0);.
33d90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
33da0 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
33db0 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
33dc0 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
33dd0 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
33de0 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
33df0 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
33e00 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
33e10 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
33e20 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20  (pVtab, offset, 
33e30 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
33e40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
33e50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
33ea0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
33eb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
33ec0 2f 20 46 72 65 65 73 20 61 20 6e 61 74 69 76 65  / Frees a native
33ed0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74   sqlite3_vtab st
33ee0 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68  ructure using th
33ef0 65 20 70 72 6f 76 69 64 65 64 20 6e 61 74 69 76  e provided nativ
33f00 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  e..        /// p
33f10 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20  ointer to it... 
33f20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
33f30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33f40 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
33f50 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
33f60 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f   /// A native po
33f70 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76  inter to a nativ
33f80 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
33f90 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
33fa0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33fb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
33fc0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
33fd0 61 6c 20 76 6f 69 64 20 46 72 65 65 54 61 62 6c  al void FreeTabl
33fe0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
33ff0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
34000 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
34010 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34020 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
34030 72 28 70 56 74 61 62 2c 20 6e 75 6c 6c 29 3b 0d  r(pVtab, null);.
34040 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
34050 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
34060 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
34070 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
34080 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
34090 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
340a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
340e0 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
340f0 76 65 20 43 75 72 73 6f 72 20 48 65 6c 70 65 72  ve Cursor Helper
34100 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
34110 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
34120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
34130 6f 63 61 74 65 73 20 61 20 6e 61 74 69 76 65 20  ocates a native 
34140 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
34150 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
34160 63 74 75 72 65 20 61 6e 64 0d 0a 20 20 20 20 20  cture and..     
34170 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61     /// returns a
34180 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
34190 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  to it...        
341a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
341b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
341c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
341d0 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e  // A native poin
341e0 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20  ter to a native 
341f0 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
34200 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
34210 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
34220 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
34230 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
34240 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72  d virtual IntPtr
34250 20 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72 28   AllocateCursor(
34260 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
34270 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
34280 7a 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a  ze = Marshal.Siz
34290 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20  eOf(typeof(..   
342a0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
342b0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
342c0 2e 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75  .sqlite3_vtab_cu
342d0 72 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  rsor));....     
342e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
342f0 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63  LiteMemory.Alloc
34300 61 74 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20  ate(size);..    
34310 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34320 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34360 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34370 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
34380 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
34390 72 65 65 73 20 61 20 6e 61 74 69 76 65 20 73 71  rees a native sq
343a0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
343b0 72 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  r structure usin
343c0 67 20 74 68 65 20 70 72 6f 76 69 64 65 64 0d 0a  g the provided..
343d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69          /// nati
343e0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74  ve pointer to it
343f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34400 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
34410 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
34420 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
34430 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74         /// A nat
34440 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
34450 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
34460 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
34470 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
34480 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
34490 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
344a0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
344b0 76 6f 69 64 20 46 72 65 65 43 75 72 73 6f 72 28  void FreeCursor(
344c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
344d0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
344e0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
344f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34500 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
34510 2e 46 72 65 65 28 70 43 75 72 73 6f 72 29 3b 0d  .Free(pCursor);.
34520 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
34530 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
34540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
34550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34590 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
345a0 67 69 6f 6e 20 53 74 61 74 69 63 20 54 61 62 6c  gion Static Tabl
345b0 65 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73  e Lookup Methods
345c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
345d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
345e0 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e 64 20 72   /// Reads and r
345f0 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76  eturns the nativ
34600 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
34610 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
34620 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  rived..        /
34630 2f 2f 20 73 74 72 75 63 74 75 72 65 20 62 61 73  // structure bas
34640 65 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65  ed on the native
34650 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
34660 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
34670 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  sor..        ///
34680 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
34690 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
346a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
346b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
346c0 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a  name="module">..
346d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
346e0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
346f0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
34700 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62  ct instance to b
34710 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  e used...       
34720 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
34740 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
34750 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
34760 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
34770 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
34780 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
34790 69 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a  ived structure..
347a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d          /// from
347b0 20 77 68 69 63 68 20 74 6f 20 72 65 61 64 20 74   which to read t
347c0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
347d0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
347e0 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20  _vtab derived.. 
347f0 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
34800 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
34810 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
34820 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
34830 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
34840 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
34850 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
34860 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
34870 74 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20  tructure -OR-.. 
34880 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
34890 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
348a0 6f 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e  o" /> if it cann
348b0 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
348c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
348d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
348e0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
348f0 63 20 49 6e 74 50 74 72 20 54 61 62 6c 65 46 72  c IntPtr TableFr
34900 6f 6d 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20  omCursor(..     
34910 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
34920 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
34930 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
34940 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
34950 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
34960 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
34970 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e  f (pCursor == In
34980 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
34990 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
349a0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
349b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
349c0 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
349d0 61 64 49 6e 74 50 74 72 28 70 43 75 72 73 6f 72  adIntPtr(pCursor
349e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
349f0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
34a00 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
34a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34a60 23 72 65 67 69 6f 6e 20 54 61 62 6c 65 20 4c 6f  #region Table Lo
34a70 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20  okup Methods..  
34a80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
34a90 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
34aa0 20 52 65 61 64 73 20 61 6e 64 20 72 65 74 75 72   Reads and retur
34ab0 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  ns the native po
34ac0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
34ad0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
34ae0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
34af0 74 72 75 63 74 75 72 65 20 62 61 73 65 64 20 6f  tructure based o
34b00 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69  n the native poi
34b10 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
34b20 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d  te3_vtab_cursor.
34b30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72  .        /// der
34b40 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
34b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
34b60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
34b70 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
34b80 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
34b90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
34ba0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
34bb0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
34bc0 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
34bd0 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20  tructure..      
34be0 20 20 2f 2f 2f 20 66 72 6f 6d 20 77 68 69 63 68    /// from which
34bf0 20 74 6f 20 72 65 61 64 20 74 68 65 20 6e 61 74   to read the nat
34c00 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
34c10 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
34c20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
34c30 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d   /// structure..
34c40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
34c50 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
34c60 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
34c70 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
34c80 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
34c90 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
34ca0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
34cb0 72 65 20 2d 4f 52 2d 0d 0a 20 20 20 20 20 20 20  re -OR-..       
34cc0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
34cd0 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20  IntPtr.Zero" /> 
34ce0 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
34cf0 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
34d00 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
34d10 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
34d20 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
34d30 6e 74 50 74 72 20 54 61 62 6c 65 46 72 6f 6d 43  ntPtr TableFromC
34d40 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  ursor(..        
34d50 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
34d60 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
34d70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
34d80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
34d90 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72   TableFromCursor
34da0 28 74 68 69 73 2c 20 70 43 75 72 73 6f 72 29 3b  (this, pCursor);
34db0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
34dc0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
34e10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
34e20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
34e30 20 2f 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61 6e   /// Looks up an
34e40 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
34e50 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
34e60 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
34e70 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
34e80 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 62 61 73  /// instance bas
34e90 65 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65  ed on the native
34ea0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
34eb0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
34ec0 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
34ed0 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
34ee0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
34ef0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
34f00 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
34f10 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
34f20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
34f30 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34f40 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
34f50 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
34f60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
34f70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
34f80 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
34f90 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
34fa0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
34fb0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
34fc0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 6f 72  ject instance or
34fd0 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
34fe0 20 20 2f 2f 2f 20 74 68 65 20 63 6f 72 72 65 73    /// the corres
34ff0 70 6f 6e 64 69 6e 67 20 6f 6e 65 20 63 61 6e 6e  ponding one cann
35000 6f 74 20 62 65 20 66 6f 75 6e 64 2e 0d 0a 20 20  ot be found...  
35010 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
35020 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
35030 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
35040 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
35050 6c 65 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50  le TableFromIntP
35060 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
35070 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
35080 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
35090 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
350a0 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20 3d       if (pVtab =
350b0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
350c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
350d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
350e0 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  etTableError(pVt
350f0 61 62 2c 20 22 69 6e 76 61 6c 69 64 20 6e 61 74  ab, "invalid nat
35100 69 76 65 20 74 61 62 6c 65 22 29 3b 0d 0a 20 20  ive table");..  
35110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
35120 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
35130 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35140 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
35150 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
35160 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
35170 20 20 69 66 20 28 28 74 61 62 6c 65 73 20 21 3d    if ((tables !=
35180 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
35190 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65             table
351a0 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 70 56  s.TryGetValue(pV
351b0 74 61 62 2c 20 6f 75 74 20 74 61 62 6c 65 29 29  tab, out table))
351c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
351d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
351e0 20 72 65 74 75 72 6e 20 74 61 62 6c 65 3b 0d 0a   return table;..
351f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
35200 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74  .            Set
35210 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
35220 2c 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  , UnsafeNativeMe
35230 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
35240 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
35250 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
35260 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
35270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35280 20 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c 65    "managed table
35290 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f 75   for {0} not fou
352a0 6e 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a 0d  nd", pVtab));...
352b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
352c0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
352d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
352e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35320 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35330 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
35340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
35350 6c 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74 75  locates and retu
35360 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69  rns a native poi
35370 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65  nter to a sqlite
35380 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a  3_vtab derived..
35390 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
353a0 63 74 75 72 65 20 61 6e 64 20 63 72 65 61 74 65  cture and create
353b0 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e  s an association
353c0 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64 20   between it and 
353d0 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
353e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
353f0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
35400 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
35410 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
35420 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
35430 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
35440 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
35450 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
35460 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
35470 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
35480 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
35490 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
354a0 20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f   used..        /
354b0 2f 2f 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67  // when creating
354c0 20 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f 6e   the association
354d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
354e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
354f0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
35500 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
35510 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
35520 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  o a sqlite3_vtab
35530 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
35540 72 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  re or..        /
35550 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
35560 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
35570 20 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c   the method fail
35580 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e  s for any reason
35590 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
355a0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
355b0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
355c0 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c  tual IntPtr Tabl
355d0 65 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  eToIntPtr(..    
355e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
355f0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
35600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
35610 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
35620 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62          if ((tab
35630 6c 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  le == null) || (
35640 74 61 62 6c 65 73 20 3d 3d 20 6e 75 6c 6c 29 29  tables == null))
35650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35660 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
35670 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
35680 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
35690 62 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  b = IntPtr.Zero;
356a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
356b0 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c  ol success = fal
356c0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
356d0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
356e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
356f0 20 20 20 20 20 20 20 70 56 74 61 62 20 3d 20 41         pVtab = A
35700 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 3b 0d  llocateTable();.
35710 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
35720 20 20 20 69 66 20 28 70 56 74 61 62 20 21 3d 20     if (pVtab != 
35730 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
35740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
35750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35760 20 20 20 20 20 5a 65 72 6f 54 61 62 6c 65 28 70       ZeroTable(p
35770 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
35780 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c              tabl
35790 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d  e.NativeHandle =
357a0 20 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20   pVtab;..       
357b0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
357c0 6c 65 73 2e 41 64 64 28 70 56 74 61 62 2c 20 74  les.Add(pVtab, t
357d0 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  able);..        
357e0 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63              succ
357f0 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ess = true;..   
35800 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
35810 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
35820 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
35830 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
35840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
35850 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20     if (!success 
35860 26 26 20 28 70 56 74 61 62 20 21 3d 20 49 6e 74  && (pVtab != Int
35870 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20  Ptr.Zero))..    
35880 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
35890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
358a0 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74     FreeTable(pVt
358b0 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
358c0 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20            pVtab 
358d0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
358e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
358f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
35900 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35910 72 65 74 75 72 6e 20 70 56 74 61 62 3b 0d 0a 20  return pVtab;.. 
35920 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
35930 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
35940 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35990 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
359a0 6f 6e 20 43 75 72 73 6f 72 20 4c 6f 6f 6b 75 70  on Cursor Lookup
359b0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
359c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
359d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f  .        /// Loo
359e0 6b 73 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e  ks up and return
359f0 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
35a00 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
35a10 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 0d 0a 20  bleCursor" />.. 
35a20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63         /// objec
35a30 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64  t instance based
35a40 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70   on the native p
35a50 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a 20  ointer to the.. 
35a60 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
35a70 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
35a80 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
35a90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35aa0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
35ab0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
35ac0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
35ad0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
35ae0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
35af0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
35b00 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
35b10 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
35b20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
35b30 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
35b40 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
35b50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
35b60 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
35b70 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
35b80 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
35b90 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
35ba0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
35bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
35bc0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
35bd0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
35be0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
35bf0 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
35c00 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
35c10 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20   or null..      
35c20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 63 6f 72    /// if the cor
35c30 72 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65 20 63  responding one c
35c40 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2e 0d  annot be found..
35c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
35c60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
35c70 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
35c80 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  al SQLiteVirtual
35c90 54 61 62 6c 65 43 75 72 73 6f 72 20 43 75 72 73  TableCursor Curs
35ca0 6f 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20  orFromIntPtr(.. 
35cb0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
35cc0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
35cd0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
35ce0 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
35cf0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
35d00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
35d10 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74  pCursor == IntPt
35d20 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
35d30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35d40 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
35d50 45 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69 6e  Error(pVtab, "in
35d60 76 61 6c 69 64 20 6e 61 74 69 76 65 20 63 75 72  valid native cur
35d70 73 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  sor");..        
35d80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
35d90 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
35da0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
35db0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
35dc0 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
35dd0 6f 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  or;....         
35de0 20 20 20 69 66 20 28 28 63 75 72 73 6f 72 73 20     if ((cursors 
35df0 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
35e00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72               cur
35e10 73 6f 72 73 2e 54 72 79 47 65 74 56 61 6c 75 65  sors.TryGetValue
35e20 28 70 43 75 72 73 6f 72 2c 20 6f 75 74 20 63 75  (pCursor, out cu
35e30 72 73 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20  rsor))..        
35e40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35e50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 75         return cu
35e60 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rsor;..         
35e70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
35e80 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
35e90 72 28 70 56 74 61 62 2c 20 55 6e 73 61 66 65 4e  r(pVtab, UnsafeN
35ea0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72  ativeMethods.Str
35eb0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
35ec0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
35ed0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
35ee0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
35ef0 20 20 20 20 20 20 20 20 20 22 6d 61 6e 61 67 65           "manage
35f00 64 20 63 75 72 73 6f 72 20 66 6f 72 20 7b 30 7d  d cursor for {0}
35f10 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70 43 75   not found", pCu
35f20 72 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  rsor));....     
35f30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
35f40 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ll;..        }..
35f50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
35f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35fa0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
35fb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
35fc0 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65      /// Allocate
35fd0 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  s and returns a 
35fe0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
35ff0 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  o a sqlite3_vtab
36000 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  _cursor..       
36010 20 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74 72   /// derived str
36020 75 63 74 75 72 65 20 61 6e 64 20 63 72 65 61 74  ucture and creat
36030 65 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f  es an associatio
36040 6e 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64  n between it and
36050 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
36060 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  / specified <see
36070 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
36080 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
36090 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
360a0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
360b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
360c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
360d0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
360e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
360f0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
36100 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
36110 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
36120 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 0d 0a  instance to be..
36130 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
36140 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74   when creating t
36150 68 65 20 61 73 73 6f 63 69 61 74 69 6f 6e 2e 0d  he association..
36160 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
36170 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
36180 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
36190 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
361a0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
361b0 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  a sqlite3_vtab_c
361c0 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74  ursor derived st
361d0 72 75 63 74 75 72 65 20 6f 72 0d 0a 20 20 20 20  ructure or..    
361e0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
361f0 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20  f="IntPtr.Zero" 
36200 2f 3e 20 69 66 20 74 68 65 20 6d 65 74 68 6f 64  /> if the method
36210 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79 20 72   fails for any r
36220 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eason...        
36230 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
36240 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
36250 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72  d virtual IntPtr
36260 20 43 75 72 73 6f 72 54 6f 49 6e 74 50 74 72 28   CursorToIntPtr(
36270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
36280 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
36290 43 75 72 73 6f 72 20 63 75 72 73 6f 72 0d 0a 20  Cursor cursor.. 
362a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
362b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
362c0 20 20 20 20 20 69 66 20 28 28 63 75 72 73 6f 72       if ((cursor
362d0 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 63 75   == null) || (cu
362e0 72 73 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  rsors == null)).
362f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36300 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
36310 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
36320 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
36330 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  or = IntPtr.Zero
36340 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ;..            b
36350 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61  ool success = fa
36360 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
36370 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
36380 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36390 20 20 20 20 20 20 20 20 70 43 75 72 73 6f 72 20          pCursor 
363a0 3d 20 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72  = AllocateCursor
363b0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
363c0 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73         if (pCurs
363d0 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or != IntPtr.Zer
363e0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
363f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36400 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f             curso
36410 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d  r.NativeHandle =
36420 20 70 43 75 72 73 6f 72 3b 0d 0a 20 20 20 20 20   pCursor;..     
36430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
36440 75 72 73 6f 72 73 2e 41 64 64 28 70 43 75 72 73  ursors.Add(pCurs
36450 6f 72 2c 20 63 75 72 73 6f 72 29 3b 0d 0a 20 20  or, cursor);..  
36460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36470 20 20 73 75 63 63 65 73 73 20 3d 20 74 72 75 65    success = true
36480 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
36490 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
364a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
364b0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
364c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
364d0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 75           if (!su
364e0 63 63 65 73 73 20 26 26 20 28 70 43 75 72 73 6f  ccess && (pCurso
364f0 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
36500 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
36510 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36520 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65 43             FreeC
36530 75 72 73 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  ursor(pCursor);.
36540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36550 20 20 20 20 20 70 43 75 72 73 6f 72 20 3d 20 49       pCursor = I
36560 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
36570 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
36580 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
36590 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
365a0 75 72 6e 20 70 43 75 72 73 6f 72 3b 0d 0a 20 20  urn pCursor;..  
365b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
365c0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
365d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
365e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
365f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36620 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
36630 6e 20 46 75 6e 63 74 69 6f 6e 20 4c 6f 6f 6b 75  n Function Looku
36640 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  p Methods..     
36650 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
36660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65  ..        /// De
36670 74 65 72 69 6d 69 6e 65 73 20 74 68 65 20 6b 65  terimines the ke
36680 79 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65  y that should be
36690 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66   used to identif
366a0 79 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 0d  y and store the.
366b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
366c0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75  e cref="SQLiteFu
366d0 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  nction" /> objec
366e0 74 20 69 6e 73 74 61 6e 63 65 20 66 6f 72 20 74  t instance for t
366f0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
36700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 69  ..        /// (i
36710 2e 65 2e 20 74 6f 20 62 65 20 72 65 74 75 72 6e  .e. to be return
36720 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20  ed via the..    
36730 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
36740 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
36750 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
36760 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 29  tion" /> method)
36770 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36780 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
36790 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
367a0 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e  me="argumentCoun
367b0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
367c0 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   The number of a
367d0 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20  rguments to the 
367e0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75  virtual table fu
367f0 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  nction...       
36800 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
36810 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
36820 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
36830 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
36840 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74  name of the virt
36850 75 61 6c 20 74 61 62 6c 65 20 66 75 6e 63 74 69  ual table functi
36860 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
36870 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
36880 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
36890 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a  me="function">..
368a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
368b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
368c0 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  eFunction" /> ob
368d0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
368e0 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
368f0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20         /// this 
36900 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75  virtual table fu
36910 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  nction...       
36920 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
36930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
36940 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
36950 2f 20 54 68 65 20 73 74 72 69 6e 67 20 74 68 61  / The string tha
36960 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  t should be used
36970 20 74 6f 20 69 64 65 6e 74 69 66 79 20 61 6e 64   to identify and
36980 20 73 74 6f 72 65 20 74 68 65 20 76 69 72 74 75   store the virtu
36990 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
369a0 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69  table function i
369b0 6e 73 74 61 6e 63 65 2e 20 20 54 68 69 73 20 6d  nstance.  This m
369c0 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 72 65 74  ethod cannot ret
369d0 75 72 6e 20 6e 75 6c 6c 2e 20 20 49 66 20 6e 75  urn null.  If nu
369e0 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
369f0 69 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d  is returned from
36a00 20 74 68 69 73 20 6d 65 74 68 6f 64 2c 20 74 68   this method, th
36a10 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e  e behavior is un
36a20 64 65 66 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  defined...      
36a30 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
36a40 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
36a50 74 65 64 20 76 69 72 74 75 61 6c 20 73 74 72 69  ted virtual stri
36a60 6e 67 20 47 65 74 46 75 6e 63 74 69 6f 6e 4b 65  ng GetFunctionKe
36a70 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
36a80 69 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f 75 6e  int argumentCoun
36a90 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
36aa0 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20  string name,..  
36ab0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36ac0 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f  Function functio
36ad0 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  n..            )
36ae0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
36af0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
36b00 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36b10 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
36b20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
36b30 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49     CultureInfo.I
36b40 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c  nvariantCulture,
36b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36b60 20 20 22 7b 30 7d 3a 7b 31 7d 22 2c 20 61 72 67    "{0}:{1}", arg
36b70 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 6e 61 6d 65  umentCount, name
36b80 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
36b90 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
36ba0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
36bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36bf0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
36c00 23 72 65 67 69 6f 6e 20 54 61 62 6c 65 20 44 65  #region Table De
36c10 63 6c 61 72 61 74 69 6f 6e 20 48 65 6c 70 65 72  claration Helper
36c20 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
36c30 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
36c40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  .        /// Att
36c50 65 6d 70 74 73 20 74 6f 20 64 65 63 6c 61 72 65  empts to declare
36c60 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20   the schema for 
36c70 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
36c80 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  e using the..   
36c90 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
36ca0 65 64 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ed database conn
36cb0 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  ection...       
36cc0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
36cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
36ce0 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
36cf0 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  tion">..        
36d00 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
36d10 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
36d20 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ion" /> object i
36d30 6e 73 74 61 6e 63 65 20 74 6f 20 75 73 65 20 77  nstance to use w
36d40 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hen..        ///
36d50 20 64 65 63 6c 61 72 69 6e 67 20 74 68 65 20 73   declaring the s
36d60 63 68 65 6d 61 20 6f 66 20 74 68 65 20 76 69 72  chema of the vir
36d70 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 54 68 69  tual table.  Thi
36d80 73 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20  s parameter may 
36d90 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  not..        ///
36da0 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20   be null...     
36db0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
36dc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
36dd0 72 61 6d 20 6e 61 6d 65 3d 22 73 71 6c 22 3e 0d  ram name="sql">.
36de0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
36df0 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
36e00 6e 67 20 74 68 65 20 43 52 45 41 54 45 20 54 41  ng the CREATE TA
36e10 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 74 68  BLE statement th
36e20 61 74 20 63 6f 6d 70 6c 65 74 65 6c 79 0d 0a 20  at completely.. 
36e30 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 63 72         /// descr
36e40 69 62 65 73 20 74 68 65 20 73 63 68 65 6d 61 20  ibes the schema 
36e50 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
36e60 74 61 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72  table.  This par
36e70 61 6d 65 74 65 72 20 6d 61 79 20 6e 6f 74 0d 0a  ameter may not..
36e80 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6e          /// be n
36e90 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ull...        //
36ea0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
36eb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
36ec0 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
36ed0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66        /// Upon f
36ee0 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72  ailure, this par
36ef0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
36f00 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
36f10 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20  in an error..   
36f20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65       /// message
36f30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36f40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
36f50 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
36f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
36f70 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
36f80 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
36f90 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
36fa0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
36fb0 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 53 51  ected virtual SQ
36fc0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65  LiteErrorCode De
36fd0 63 6c 61 72 65 54 61 62 6c 65 28 0d 0a 20 20 20  clareTable(..   
36fe0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
36ff0 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63  onnection connec
37000 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  tion,..         
37010 20 20 20 73 74 72 69 6e 67 20 73 71 6c 2c 0d 0a     string sql,..
37020 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
37030 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
37040 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
37050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37060 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69      if (connecti
37070 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
37080 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
37090 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
370a0 72 20 3d 20 22 69 6e 76 61 6c 69 64 20 63 6f 6e  r = "invalid con
370b0 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20 20 20 20  nection";..     
370c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
370d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
370e0 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
370f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
37100 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
37110 65 20 73 71 6c 69 74 65 42 61 73 65 20 3d 20 63  e sqliteBase = c
37120 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71 6c 3b 0d  onnection._sql;.
37130 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
37140 66 20 28 73 71 6c 69 74 65 42 61 73 65 20 3d 3d  f (sqliteBase ==
37150 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
37160 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
37170 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22         error = "
37180 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20 69  connection has i
37190 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65 22 3b 0d  nvalid handle";.
371a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
371b0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
371c0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
371d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
371e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
371f0 28 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  (sql == null).. 
37200 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
37220 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20 53  ror = "invalid S
37230 51 4c 20 73 74 61 74 65 6d 65 6e 74 22 3b 0d 0a  QL statement";..
37240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37250 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
37260 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
37270 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
37280 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
37290 72 6e 20 73 71 6c 69 74 65 42 61 73 65 2e 44 65  rn sqliteBase.De
372a0 63 6c 61 72 65 56 69 72 74 75 61 6c 54 61 62 6c  clareVirtualTabl
372b0 65 28 74 68 69 73 2c 20 73 71 6c 2c 20 72 65 66  e(this, sql, ref
372c0 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20   error);..      
372d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
372e0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
372f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
37300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
37340 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 46 75        #region Fu
37350 6e 63 74 69 6f 6e 20 44 65 63 6c 61 72 61 74 69  nction Declarati
37360 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  on Helper Method
37370 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
37380 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
37390 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20    /// Calls the 
373a0 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f  native SQLite co
373b0 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72  re library in or
373c0 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20 61  der to declare a
373d0 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20   virtual..      
373e0 20 20 2f 2f 2f 20 74 61 62 6c 65 20 66 75 6e 63    /// table func
373f0 74 69 6f 6e 20 69 6e 20 72 65 73 70 6f 6e 73 65  tion in response
37400 20 74 6f 20 61 20 63 61 6c 6c 20 69 6e 74 6f 20   to a call into 
37410 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
37420 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
37430 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
37440 78 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20  xCreate" />..   
37450 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65       /// or <see
37460 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
37470 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
37480 65 63 74 22 20 2f 3e 20 76 69 72 74 75 61 6c 20  ect" /> virtual 
37490 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
374a0 2f 2f 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  // methods...   
374b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
374c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
374d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
374e0 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
374f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
37500 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
37510 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  nection" /> obje
37520 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 75  ct instance to u
37530 73 65 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20  se when..       
37540 20 2f 2f 2f 20 64 65 63 6c 61 72 69 6e 67 20 74   /// declaring t
37550 68 65 20 73 63 68 65 6d 61 20 6f 66 20 74 68 65  he schema of the
37560 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
37570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
37580 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
37590 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
375a0 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d  argumentCount">.
375b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
375c0 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
375d0 65 6e 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63  ents to the func
375e0 74 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61  tion being decla
375f0 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  red...        //
37600 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
37610 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
37620 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
37630 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
37640 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f  e of the functio
37650 6e 20 62 65 69 6e 67 20 64 65 63 6c 61 72 65 64  n being declared
37660 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37670 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37680 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
37690 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  ="error">..     
376a0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
376b0 65 73 73 2c 20 74 68 65 20 63 6f 6e 74 65 6e 74  ess, the content
376c0 73 20 6f 66 20 74 68 69 73 20 70 61 72 61 6d 65  s of this parame
376d0 74 65 72 20 61 72 65 20 75 6e 64 65 66 69 6e 65  ter are undefine
376e0 64 2e 20 20 55 70 6f 6e 0d 0a 20 20 20 20 20 20  d.  Upon..      
376f0 20 20 2f 2f 2f 20 66 61 69 6c 75 72 65 2c 20 69    /// failure, i
37700 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  t should contain
37710 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   an appropriate 
37720 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
37730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
37740 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
37750 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
37760 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
37770 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
37780 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
37790 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
377a0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
377b0 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ed virtual SQLit
377c0 65 45 72 72 6f 72 43 6f 64 65 20 44 65 63 6c 61  eErrorCode Decla
377d0 72 65 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  reFunction(..   
377e0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
377f0 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63  onnection connec
37800 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  tion,..         
37810 20 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43     int argumentC
37820 6f 75 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  ount,..         
37830 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
37840 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
37850 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
37860 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
37870 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37880 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74       if (connect
37890 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion == null)..  
378a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
378b0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
378c0 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20 63 6f  or = "invalid co
378d0 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20 20 20  nnection";..    
378e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
378f0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
37900 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
37910 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
37920 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
37930 73 65 20 73 71 6c 69 74 65 42 61 73 65 20 3d 20  se sqliteBase = 
37940 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71 6c 3b  connection._sql;
37950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37960 69 66 20 28 73 71 6c 69 74 65 42 61 73 65 20 3d  if (sqliteBase =
37970 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
37980 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37990 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
379a0 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20  "connection has 
379b0 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65 22 3b  invalid handle";
379c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
379d0 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
379e0 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
379f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
37a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
37a10 74 75 72 6e 20 73 71 6c 69 74 65 42 61 73 65 2e  turn sqliteBase.
37a20 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c 46 75  DeclareVirtualFu
37a30 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
37a40 20 20 20 20 20 20 20 20 20 74 68 69 73 2c 20 61           this, a
37a50 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 6e 61  rgumentCount, na
37a60 6d 65 2c 20 72 65 66 20 65 72 72 6f 72 29 3b 0d  me, ref error);.
37a70 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
37a80 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
37a90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
37aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ae0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
37af0 67 69 6f 6e 20 45 72 72 6f 72 20 48 61 6e 64 6c  gion Error Handl
37b00 69 6e 67 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  ing Properties..
37b10 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
37b20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 3b 0d  bool logErrors;.
37b30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
37b40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
37b50 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6f 72 20 73  /// Returns or s
37b60 65 74 73 20 61 20 62 6f 6f 6c 65 61 6e 20 76 61  ets a boolean va
37b70 6c 75 65 20 69 6e 64 69 63 61 74 69 6e 67 20 77  lue indicating w
37b80 68 65 74 68 65 72 20 76 69 72 74 75 61 6c 20 74  hether virtual t
37b90 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
37ba0 2f 20 65 72 72 6f 72 73 20 73 68 6f 75 6c 64 20  / errors should 
37bb0 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
37bc0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
37bd0 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
37be0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
37bf0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
37c00 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
37c10 69 72 74 75 61 6c 20 62 6f 6f 6c 20 4c 6f 67 45  irtual bool LogE
37c20 72 72 6f 72 73 4e 6f 54 68 72 6f 77 0d 0a 20 20  rrorsNoThrow..  
37c30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37c40 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
37c50 6e 20 6c 6f 67 45 72 72 6f 72 73 3b 20 7d 0d 0a  n logErrors; }..
37c60 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
37c70 7b 20 6c 6f 67 45 72 72 6f 72 73 20 3d 20 76 61  { logErrors = va
37c80 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
37c90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
37ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ce0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
37cf0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6c 6f 67  private bool log
37d00 45 78 63 65 70 74 69 6f 6e 73 3b 0d 0a 20 20 20  Exceptions;..   
37d10 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
37d20 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
37d30 52 65 74 75 72 6e 73 20 6f 72 20 73 65 74 73 20  Returns or sets 
37d40 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 20  a boolean value 
37d50 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 74 68  indicating wheth
37d60 65 72 20 65