System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 68c6702bfee827616137ac9f9bdc2231273b0bb3:


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 49 6e 74 65 72 6e 61   #region Interna
a870: 6c 20 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72  l Marshal Helper
a880: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
a890: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a8a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  .        /// Att
a8b0: 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69  empts to determi
a8c0: 6e 65 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ne the structure
a8d0: 20 73 69 7a 65 73 20 6e 65 65 64 65 64 20 74 6f   sizes needed to
a8e0: 20 63 72 65 61 74 65 20 61 6e 64 0d 0a 20 20 20   create and..   
a8f0: 20 20 20 20 20 2f 2f 2f 20 70 6f 70 75 6c 61 74       /// populat
a900: 65 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  e a native..    
a910: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
a920: 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
a930: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
a940: 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20  ndex_info" />.. 
a950: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
a960: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
a970: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a980: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
a990: 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 49 6e  m name="sizeOfIn
a9a0: 66 6f 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20  foType">..      
a9b0: 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f    /// The size o
a9c0: 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  f the native..  
a9d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
a9e0: 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76  ref="UnsafeNativ
a9f0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
aa00: 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d  _index_info" />.
aa10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
aa20: 75 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64  ucture is stored
aa30: 20 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20   here...        
aa40: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
aa50: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
aa60: 20 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e   name="sizeOfCon
aa70: 73 74 72 61 69 6e 74 54 79 70 65 22 3e 0d 0a 20  straintType">.. 
aa80: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73         /// The s
aa90: 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76  ize of the nativ
aaa0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
aab0: 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65  see cref="Unsafe
aac0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
aad0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
aae0: 74 72 61 69 6e 74 22 20 2f 3e 0d 0a 20 20 20 20  traint" />..    
aaf0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
ab00: 65 20 69 73 20 73 74 6f 72 65 64 20 68 65 72 65  e is stored here
ab10: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
ab20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
ab30: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
ab40: 3d 22 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54  ="sizeOfOrderByT
ab50: 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ype">..        /
ab60: 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74  // The size of t
ab70: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
ab80: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
ab90: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
aba0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
abb0: 64 65 78 5f 6f 72 64 65 72 62 79 22 20 2f 3e 0d  dex_orderby" />.
abc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
abd0: 75 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64  ucture is stored
abe0: 20 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20   here...        
abf0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
ac00: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
ac10: 20 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e   name="sizeOfCon
ac20: 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65  straintUsageType
ac30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
ac40: 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  The size of the 
ac50: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
ac60: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55  /// <see cref="U
ac70: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
ac80: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
ac90: 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
aca0: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
acb0: 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69 73 20  // structure is 
acc0: 73 74 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20  stored here...  
acd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
ace0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
acf0: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
ad00: 53 69 7a 65 4f 66 28 20 2f 2a 20 4e 4f 54 45 3a  SizeOf( /* NOTE:
ad10: 20 46 6f 72 20 74 65 73 74 20 75 73 65 20 6f 6e   For test use on
ad20: 6c 79 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ly. */..        
ad30: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
ad40: 4f 66 49 6e 66 6f 54 79 70 65 2c 0d 0a 20 20 20  OfInfoType,..   
ad50: 20 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74           out int
ad60: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
ad70: 74 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20  tType,..        
ad80: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
ad90: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 2c 0d 0a  OfOrderByType,..
ada0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 20              out 
adb0: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
adc0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 0d 0a 20  aintUsageType.. 
add0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
ade0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
adf0: 20 20 20 20 20 73 69 7a 65 4f 66 49 6e 66 6f 54       sizeOfInfoT
ae00: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
ae10: 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
ae20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
ae30: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
ae40: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
ae50: 69 6e 66 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  info));....     
ae60: 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e         sizeOfCon
ae70: 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61  straintType = Ma
ae80: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
ae90: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
aea0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
aeb0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
aec0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
aed0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
aee0: 20 20 20 20 20 73 69 7a 65 4f 66 4f 72 64 65 72       sizeOfOrder
aef0: 42 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ByType = Marshal
af00: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
af10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
af20: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
af30: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
af40: 65 78 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d  ex_orderby));...
af50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a  .            siz
af60: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
af70: 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  geType = Marshal
af80: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
af90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
afa0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
afb0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
afc0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
afd0: 61 67 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  age));..        
afe0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
b040: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b050: 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
b060: 70 74 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  pts to allocate 
b070: 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 61  and initialize a
b080: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
b090: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b0a0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
b0b0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
b0c0: 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20  x_info" />..    
b0d0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
b0e0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
b0f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b100: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
b110: 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74  ame="nConstraint
b120: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
b130: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73  The number of <s
b140: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
b150: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20  ndexConstraint" 
b160: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
b170: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
b180: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
b190: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
b1a0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
b1b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
b1c0: 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d  ame="nOrderBy">.
b1d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
b1e0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
b1f0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
b200: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73  xOrderBy" /> ins
b210: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
b220: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
b230: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
b240: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
b250: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
b260: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
b270: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
b280: 6c 79 20 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74  ly allocated nat
b290: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
b2a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
b2b0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b2c0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
b2d0: 66 6f 22 20 2f 3e 20 73 74 72 75 63 74 75 72 65  fo" /> structure
b2e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2d 4f  ..        /// -O
b2f0: 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  R- <see cref="In
b300: 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
b310: 20 69 74 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65   it could not be
b320: 20 66 75 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64   fully allocated
b330: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
b340: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
b350: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b360: 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 4d  ic IntPtr AllocM
b370: 65 6d 6f 72 79 42 6c 6f 63 6b 28 20 2f 2a 20 4e  emoryBlock( /* N
b380: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 75 73  OTE: For test us
b390: 65 20 6f 6e 6c 79 2e 20 2a 2f 0d 0a 20 20 20 20  e only. */..    
b3a0: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e          int nCon
b3b0: 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20  straint,..      
b3c0: 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72        int nOrder
b3d0: 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  By..            
b3e0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
b3f0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
b400: 20 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74 72   pIndex = IntPtr
b410: 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
b420: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 66 6f      IntPtr pInfo
b430: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
b440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
b450: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20  Ptr pConstraint 
b460: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
b470: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
b480: 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e  tr pOrderBy = In
b490: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
b4a0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
b4b0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
b4c0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
b4d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
b4e0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
b4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b500: 20 20 69 6e 74 20 73 69 7a 65 4f 66 49 6e 66 6f    int sizeOfInfo
b510: 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
b520: 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f         int sizeO
b530: 66 4f 72 64 65 72 42 79 54 79 70 65 3b 0d 0a 20  fOrderByType;.. 
b540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b550: 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61  nt sizeOfConstra
b560: 69 6e 74 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  intType;..      
b570: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
b580: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73  zeOfConstraintUs
b590: 61 67 65 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20  ageType;....    
b5a0: 20 20 20 20 20 20 20 20 20 20 20 20 53 69 7a 65              Size
b5b0: 4f 66 28 6f 75 74 20 73 69 7a 65 4f 66 49 6e 66  Of(out sizeOfInf
b5c0: 6f 54 79 70 65 2c 20 6f 75 74 20 73 69 7a 65 4f  oType, out sizeO
b5d0: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 2c  fConstraintType,
b5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b5f0: 20 20 20 20 20 20 6f 75 74 20 73 69 7a 65 4f 66        out sizeOf
b600: 4f 72 64 65 72 42 79 54 79 70 65 2c 20 6f 75 74  OrderByType, out
b610: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
b620: 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a  tUsageType);....
b630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b640: 69 66 20 28 28 73 69 7a 65 4f 66 49 6e 66 6f 54  if ((sizeOfInfoT
b650: 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20 20  ype > 0) &&..   
b660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b670: 20 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69   (sizeOfConstrai
b680: 6e 74 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a  ntType > 0) &&..
b690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6a0: 20 20 20 20 28 73 69 7a 65 4f 66 4f 72 64 65 72      (sizeOfOrder
b6b0: 42 79 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a  ByType > 0) &&..
b6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6d0: 20 20 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73 74      (sizeOfConst
b6e0: 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20 3e  raintUsageType >
b6f0: 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20   0))..          
b700: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b710: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
b720: 66 6f 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72  fo = SQLiteMemor
b730: 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 4f  y.Allocate(sizeO
b740: 66 49 6e 66 6f 54 79 70 65 29 3b 0d 0a 0d 0a 20  fInfoType);.... 
b750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b760: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d     pConstraint =
b770: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
b780: 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20 20  locate(..       
b790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7a0: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
b7b0: 74 54 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72 61  tType * nConstra
b7c0: 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
b7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f 72               pOr
b7e0: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 65  derBy = SQLiteMe
b7f0: 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a  mory.Allocate(..
b800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b810: 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f 72          sizeOfOr
b820: 64 65 72 42 79 54 79 70 65 20 2a 20 6e 4f 72 64  derByType * nOrd
b830: 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBy);....      
b840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
b850: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
b860: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
b870: 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20 20  locate(..       
b880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b890: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
b8a0: 74 55 73 61 67 65 54 79 70 65 20 2a 20 6e 43 6f  tUsageType * nCo
b8b0: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
b8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8d0: 20 20 69 66 20 28 28 70 49 6e 66 6f 20 21 3d 20    if ((pInfo != 
b8e0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d  IntPtr.Zero) &&.
b8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b900: 20 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74           (pConst
b910: 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e  raint != IntPtr.
b920: 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20 20 20 20  Zero) &&..      
b930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b940: 20 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20 49    (pOrderBy != I
b950: 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a  ntPtr.Zero) &&..
b960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b970: 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74 72          (pConstr
b980: 61 69 6e 74 55 73 61 67 65 20 21 3d 20 49 6e 74  aintUsage != Int
b990: 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20  Ptr.Zero))..    
b9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b9c0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
b9d0: 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20  ffset = 0;....  
b9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9f0: 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72        Marshal.Wr
ba00: 69 74 65 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  iteInt32(..     
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba20: 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66         pInfo, of
ba30: 66 73 65 74 2c 20 6e 43 6f 6e 73 74 72 61 69 6e  fset, nConstrain
ba40: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
ba50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
ba60: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
ba70: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
ba80: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
ba90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
baa0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
bab0: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
bac0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
bad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
bae0: 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
baf0: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
bb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb10: 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20   pInfo, offset, 
bb20: 70 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d  pConstraint);...
bb30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bb40: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
bb50: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
bb60: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
bb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb80: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
bb90: 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
bba0: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
bbb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bbc0: 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
bbd0: 2e 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20 20  .WriteInt32(..  
bbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbf0: 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c            pInfo,
bc00: 20 6f 66 66 73 65 74 2c 20 6e 4f 72 64 65 72 42   offset, nOrderB
bc10: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
bc30: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
bc40: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
bc50: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc70: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
bc80: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
bc90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
bcb0: 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
bcc0: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bce0: 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20   pInfo, offset, 
bcf0: 70 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20  pOrderBy);....  
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd10: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
bd20: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
bd30: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd50: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
bd60: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74  IntPtr.Size, Int
bd70: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd90: 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72        Marshal.Wr
bda0: 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  iteIntPtr(..    
bdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdc0: 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f          pInfo, o
bdd0: 66 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61 69  ffset, pConstrai
bde0: 6e 74 55 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  ntUsage);....   
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be00: 20 20 20 20 20 70 49 6e 64 65 78 20 3d 20 70 49       pIndex = pI
be10: 6e 66 6f 3b 20 2f 2a 20 4e 4f 54 45 3a 20 53 75  nfo; /* NOTE: Su
be20: 63 63 65 73 73 2e 20 2a 2f 0d 0a 20 20 20 20 20  ccess. */..     
be30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
be40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
be60: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
be70: 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
be80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
be90: 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64          if (pInd
bea0: 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ex == IntPtr.Zer
beb0: 6f 29 20 2f 2a 20 4e 4f 54 45 3a 20 46 61 69 6c  o) /* NOTE: Fail
bec0: 75 72 65 3f 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ure? */..       
bed0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bef0: 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55  if (pConstraintU
bf00: 73 61 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  sage != IntPtr.Z
bf10: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
bf20: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
bf30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf40: 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
bf50: 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69  y.Free(pConstrai
bf60: 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20  ntUsage);..     
bf70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf80: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
bf90: 61 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  age = IntPtr.Zer
bfa0: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
bfb0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
bfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfd0: 20 69 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d   if (pOrderBy !=
bfe0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c000: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
c020: 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28  LiteMemory.Free(
c030: 70 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20  pOrderBy);..    
c040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c050: 20 20 20 20 70 4f 72 64 65 72 42 79 20 3d 20 49      pOrderBy = I
c060: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
c070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c080: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c090: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
c0a0: 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 49 6e 74  onstraint != Int
c0b0: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
c0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c0e0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
c0f0: 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e  Memory.Free(pCon
c100: 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20  straint);..     
c110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c120: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d     pConstraint =
c130: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c160: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c170: 70 49 6e 66 6f 20 21 3d 20 49 6e 74 50 74 72 2e  pInfo != IntPtr.
c180: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
c190: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1b0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
c1c0: 72 79 2e 46 72 65 65 28 70 49 6e 66 6f 29 3b 0d  ry.Free(pInfo);.
c1d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c1e0: 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 20 3d           pInfo =
c1f0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
c200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c210: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c220: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c230: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c240: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 49 6e        return pIn
c250: 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  dex;..        }.
c260: 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
c2b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
c2c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c2d0: 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61       /// Frees a
c2e0: 6c 6c 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 73  ll the memory as
c2f0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20  sociated with a 
c300: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
c310: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55  /// <see cref="U
c320: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
c330: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
c340: 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20  _info" />..     
c350: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
c360: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c370: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c380: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
c390: 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20  me="pIndex">..  
c3a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
c3b0: 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
c3c0: 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
c3d0: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74  e3_index_info st
c3e0: 72 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20  ructure to..    
c3f0: 20 20 20 20 2f 2f 2f 20 66 72 65 65 2e 0d 0a 20      /// free... 
c400: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
c410: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
c420: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
c430: 64 20 46 72 65 65 4d 65 6d 6f 72 79 42 6c 6f 63  d FreeMemoryBloc
c440: 6b 28 20 2f 2a 20 4e 4f 54 45 3a 20 46 6f 72 20  k( /* NOTE: For 
c450: 74 65 73 74 20 75 73 65 20 6f 6e 6c 79 2e 20 2a  test use only. *
c460: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
c470: 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
c480: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
c490: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c4a0: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d      if (pIndex =
c4b0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
c4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4d0: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
c4e0: 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
c4f0: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
c500: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c510: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c520: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c530: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c540: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
c550: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
c560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
c570: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
c580: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
c590: 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c5b0: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
c5c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
c5d0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
c5e0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
c5f0: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
c600: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
c610: 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28  tr.Size, sizeof(
c620: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
c630: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c640: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c650: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c660: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c670: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
c680: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
c690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
c6a0: 74 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20  tPtr pOrderBy = 
c6b0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
c6c0: 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c  adIntPtr(pIndex,
c6d0: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
c6e0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
c6f0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
c700: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
c710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
c720: 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
c730: 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  ze, IntPtr.Size)
c740: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c750: 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61   IntPtr pConstra
c760: 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c 69 74  intUsage = SQLit
c770: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
c780: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
c790: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
c7a0: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
c7b0: 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 73 74        if (pConst
c7c0: 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 49 6e  raintUsage != In
c7d0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
c7e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c7f0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
c800: 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f  eMemory.Free(pCo
c810: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29 3b 0d  nstraintUsage);.
c820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c830: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
c840: 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
c850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
c860: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
c870: 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20 49  f (pOrderBy != I
c880: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
c890: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c8a0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
c8b0: 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f  teMemory.Free(pO
c8c0: 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20  rderBy);..      
c8d0: 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72            pOrder
c8e0: 42 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  By = IntPtr.Zero
c8f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c900: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c910: 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 20  if (pConstraint 
c920: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
c930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
c940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c950: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
c960: 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d  e(pConstraint);.
c970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c980: 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49   pConstraint = I
c990: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
c9a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
c9b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49            if (pI
c9c0: 6e 64 65 78 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndex != IntPtr.Z
c9d0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
c9e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c9f0: 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
ca00: 79 2e 46 72 65 65 28 70 49 6e 64 65 78 29 3b 0d  y.Free(pIndex);.
ca10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ca20: 20 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74 72   pIndex = IntPtr
ca30: 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
ca40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
ca50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
cab0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
cac0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
cad0: 74 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e  ts a native poin
cae0: 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20  ter to a native 
caf0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
cb00: 66 6f 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20  fo structure..  
cb10: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61        /// into a
cb20: 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
cb30: 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
cb40: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
cb50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
cb60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cb70: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
cb80: 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20  e="pIndex">..   
cb90: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
cba0: 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
cbb0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
cbc0: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72  3_index_info str
cbd0: 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20  ucture to..     
cbe0: 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 2e 0d     /// convert..
cbf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
cc00: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
cc10: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
cc20: 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 22 3e 0d  includeOutput">.
cc30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
cc40: 2d 7a 65 72 6f 20 74 6f 20 69 6e 63 6c 75 64 65  -zero to include
cc50: 20 66 69 65 6c 64 73 20 66 72 6f 6d 20 74 68 65   fields from the
cc60: 20 6f 75 74 70 75 74 73 20 70 6f 72 74 69 6f 6e   outputs portion
cc70: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a   of the native..
cc80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
cc90: 63 74 75 72 65 3b 20 6f 74 68 65 72 77 69 73 65  cture; otherwise
cca0: 2c 20 74 68 65 20 22 6f 75 74 70 75 74 22 20 66  , the "output" f
ccb0: 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74 20 62  ields will not b
ccc0: 65 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  e read...       
ccd0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
cce0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
ccf0: 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
cd00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
cd10: 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
cd20: 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
cd30: 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
cd40: 6e 74 61 69 6e 20 74 68 65 20 6e 65 77 6c 79 0d  ntain the newly.
cd50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65  .        /// cre
cd60: 61 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  ated <see cref="
cd70: 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
cd80: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
cd90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
cda0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
cdb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
cdc0: 76 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74 72 28  void FromIntPtr(
cdd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
cde0: 74 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20  tPtr pIndex,..  
cdf0: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 69            bool i
ce00: 6e 63 6c 75 64 65 4f 75 74 70 75 74 2c 0d 0a 20  ncludeOutput,.. 
ce10: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53             ref S
ce20: 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78  QLiteIndex index
ce30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
ce40: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
ce50: 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64          if (pInd
ce60: 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ex == IntPtr.Zer
ce70: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
ce80: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
ce90: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
cea0: 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20  ffset = 0;....  
ceb0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43            int nC
cec0: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69  onstraint = SQLi
ced0: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
cee0: 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t32(..          
cef0: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
cf00: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
cf10: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
cf20: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
cf30: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
cf40: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
cf50: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
cf60: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
cf70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
cf80: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
cf90: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
cfa0: 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
cfc0: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
cfd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
cfe0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
cff0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d000: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d010: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
d020: 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28  tr.Size, sizeof(
d030: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
d040: 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72        int nOrder
d050: 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  By = SQLiteMarsh
d060: 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20  al.ReadInt32(.. 
d070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
d080: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
d090: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
d0a0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
d0b0: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
d0c0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
d0d0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
d0e0: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
d0f0: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
d100: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f         IntPtr pO
d110: 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d  rderBy = SQLiteM
d120: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
d130: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
d140: 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73      pIndex, offs
d150: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
d160: 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73      IntPtr pCons
d170: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e  traintUsage = In
d180: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
d190: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
d1a0: 63 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a 20 20  cludeOutput)..  
d1b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
d1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
d1d0: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
d1e0: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
d1f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d200: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
d210: 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50  ntPtr.Size, IntP
d220: 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
d230: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
d240: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
d250: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
d260: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
d270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
d280: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
d290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
d2a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
d2b0: 64 65 78 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  dex = new SQLite
d2c0: 49 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e  Index(nConstrain
d2d0: 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20  t, nOrderBy);.. 
d2e0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
d2f0: 65 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e 70  eIndexInputs inp
d300: 75 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e 70 75  uts = index.Inpu
d310: 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ts;....         
d320: 20 20 20 69 66 20 28 69 6e 70 75 74 73 20 3d 3d     if (inputs ==
d330: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
d340: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
d350: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
d360: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
d370: 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e  aint[] constrain
d380: 74 73 20 3d 20 69 6e 70 75 74 73 2e 43 6f 6e 73  ts = inputs.Cons
d390: 74 72 61 69 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20  traints;....    
d3a0: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
d3b0: 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29  traints == null)
d3c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d3d0: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
d3e0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
d3f0: 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72  ndexOrderBy[] or
d400: 64 65 72 42 79 73 20 3d 20 69 6e 70 75 74 73 2e  derBys = inputs.
d410: 4f 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20  OrderBys;....   
d420: 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64           if (ord
d430: 65 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  erBys == null)..
d440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d450: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
d460: 20 20 20 20 20 20 20 54 79 70 65 20 63 6f 6e 73         Type cons
d470: 74 72 61 69 6e 74 54 79 70 65 20 3d 20 74 79 70  traintType = typ
d480: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
d490: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
d4a0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
d4b0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
d4c0: 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt);....        
d4d0: 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f      int sizeOfCo
d4e0: 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d  nstraintType = M
d4f0: 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a  arshal.SizeOf(..
d500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d510: 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b  constraintType);
d520: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d530: 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72  for (int iConstr
d540: 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74  aint = 0; iConst
d550: 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61  raint < nConstra
d560: 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  int; iConstraint
d570: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
d580: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d590: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73      IntPtr pOffs
d5a0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
d5b0: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
d5c0: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
d5d0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72           pConstr
d5e0: 61 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61 69 6e  aint, iConstrain
d5f0: 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  t * sizeOfConstr
d600: 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  aintType);....  
d610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
d620: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
d630: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
d640: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74  constraint const
d650: 72 61 69 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20  raint =..       
d660: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 55 6e               (Un
d670: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
d680: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
d690: 63 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20 20  constraint)..   
d6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6b0: 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72       Marshal.Ptr
d6c0: 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66  ToStructure(pOff
d6d0: 73 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e 74 54  set, constraintT
d6e0: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
d6f0: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
d700: 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74  ints[iConstraint
d710: 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  ] = new SQLiteIn
d720: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a  dexConstraint(..
d730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d740: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 29 3b      constraint);
d750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d760: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54  ...            T
d770: 79 70 65 20 6f 72 64 65 72 42 79 54 79 70 65 20  ype orderByType 
d780: 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  = typeof(..     
d790: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
d7a0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
d7b0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
d7c0: 65 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  erby);....      
d7d0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
d7e0: 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61  OrderByType = Ma
d7f0: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 6f 72 64  rshal.SizeOf(ord
d800: 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  erByType);....  
d810: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
d820: 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20 30 3b  nt iOrderBy = 0;
d830: 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f 72 64   iOrderBy < nOrd
d840: 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b  erBy; iOrderBy++
d850: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d870: 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74    IntPtr pOffset
d880: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
d890: 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  .IntPtrForOffset
d8a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d8b0: 20 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 2c         pOrderBy,
d8c0: 20 69 4f 72 64 65 72 42 79 20 2a 20 73 69 7a 65   iOrderBy * size
d8d0: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 29 3b 0d  OfOrderByType);.
d8e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d8f0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
d900: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
d910: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64  ndex_orderby ord
d920: 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20 20  erBy =..        
d930: 20 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73              (Uns
d940: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
d950: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
d960: 72 64 65 72 62 79 29 0d 0a 20 20 20 20 20 20 20  rderby)..       
d970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d980: 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74   Marshal.PtrToSt
d990: 72 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c  ructure(pOffset,
d9a0: 20 6f 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a   orderByType);..
d9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d9c0: 20 20 6f 72 64 65 72 42 79 73 5b 69 4f 72 64 65    orderBys[iOrde
d9d0: 72 42 79 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74  rBy] = new SQLit
d9e0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 6f 72  eIndexOrderBy(or
d9f0: 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20  derBy);..       
da00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
da10: 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64        if (includ
da20: 65 4f 75 74 70 75 74 29 0d 0a 20 20 20 20 20 20  eOutput)..      
da30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
da40: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
da50: 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70  ndexOutputs outp
da60: 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70  uts = index.Outp
da70: 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  uts;....        
da80: 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70          if (outp
da90: 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  uts == null)..  
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dab0: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
dad0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
dae0: 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72  ntUsage[] constr
daf0: 61 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a 20 20  aintUsages =..  
db00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db10: 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72    outputs.Constr
db20: 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20  aintUsages;.... 
db30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
db40: 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  f (constraintUsa
db50: 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ges == null)..  
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db70: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
db80: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70               Typ
db90: 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
dba0: 65 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d  eType = typeof(.
dbb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dbc0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
dbd0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
dbe0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
dbf0: 74 5f 75 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  t_usage);....   
dc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
dc10: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
dc20: 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72  tUsageType = Mar
dc30: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20 20  shal.SizeOf(..  
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc50: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
dc60: 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eType);....     
dc70: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
dc80: 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
dc90: 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
dca0: 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
dcb0: 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
dcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
dce0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f         IntPtr pO
dcf0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
dd00: 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
dd10: 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd30: 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
dd40: 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20  , iConstraint * 
dd50: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
dd60: 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20  UsageType);.... 
dd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd80: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
dd90: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
dda0: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
ddb0: 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  usage constraint
ddc0: 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20  Usage =..       
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dde0: 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65   (UnsafeNativeMe
ddf0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
de00: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
de10: 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20  sage)..         
de20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de30: 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f     Marshal.PtrTo
de40: 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65  Structure(pOffse
de50: 74 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  t, constraintUsa
de60: 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  geType);....    
de70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de80: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  constraintUsages
de90: 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 20  [iConstraint] = 
dea0: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43  new SQLiteIndexC
deb0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d  onstraintUsage(.
dec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ded0: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
dee0: 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20  intUsage);..    
def0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
df00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df10: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
df20: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
df30: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
df40: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
df50: 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
df60: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
df70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df80: 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 4e 75   outputs.IndexNu
df90: 6d 62 65 72 20 3d 20 53 51 4c 69 74 65 4d 61 72  mber = SQLiteMar
dfa0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
dfb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfc0: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
dfd0: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
dfe0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
dff0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e000: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e020: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
e030: 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
e040: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
e050: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
e060: 2e 49 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 53  .IndexString = S
e070: 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
e080: 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
e090: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e0a0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
e0b0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
e0c0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 29  pIndex, offset))
e0d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e0e0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
e0f0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
e100: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
e110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e120: 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
e130: 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29  ze, sizeof(int))
e140: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e150: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4e 65 65       outputs.Nee
e160: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
e170: 6e 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  ng = SQLiteMarsh
e180: 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20  al.ReadInt32(.. 
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
e1b0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
e1c0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
e1d0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
e1e0: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
e1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e200: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
e210: 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74  int), sizeof(int
e220: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
e230: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4f         outputs.O
e240: 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d  rderByConsumed =
e250: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
e260: 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  eadInt32(..     
e270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
e280: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
e290: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e2a0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
e2b0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
e2c0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
e2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
e2e0: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
e2f0: 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  , sizeof(double)
e300: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e310: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73        outputs.Es
e320: 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 53 51  timatedCost = SQ
e330: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
e340: 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  Double(..       
e350: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
e360: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
e370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e380: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
e390: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
e3a0: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
e3b0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
e3c0: 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  t, sizeof(double
e3d0: 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29  ), sizeof(long))
e3e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e3f0: 20 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73       if (outputs
e400: 2e 43 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64  .CanUseEstimated
e410: 52 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20  Rows())..       
e420: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e440: 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65  outputs.Estimate
e450: 64 52 6f 77 73 20 3d 20 53 51 4c 69 74 65 4d 61  dRows = SQLiteMa
e460: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28  rshal.ReadInt64(
e470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e480: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
e490: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20  , offset);..    
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
e4b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e4c0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
e4d0: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
e4e0: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
e4f0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
e500: 74 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c  t, sizeof(long),
e510: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
e520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e530: 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
e540: 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29  nUseIndexFlags()
e550: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e560: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e570: 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
e580: 73 2e 49 6e 64 65 78 46 6c 61 67 73 20 3d 20 28  s.IndexFlags = (
e590: 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73  SQLiteIndexFlags
e5a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e5b0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e5c0: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
e5d0: 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
e5e0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
e5f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e600: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
e610: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
e620: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
e630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e640: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
e650: 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28  of(int), sizeof(
e660: 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  long));....     
e670: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
e680: 75 74 70 75 74 73 2e 43 61 6e 55 73 65 43 6f 6c  utputs.CanUseCol
e690: 75 6d 6e 73 55 73 65 64 28 29 29 0d 0a 20 20 20  umnsUsed())..   
e6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6c0: 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75      outputs.Colu
e6d0: 6d 6e 73 55 73 65 64 20 3d 20 53 51 4c 69 74 65  mnsUsed = SQLite
e6e0: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36  Marshal.ReadInt6
e6f0: 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4(..            
e700: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
e710: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20  ex, offset);..  
e720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
e740: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
e750: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
e760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e7a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
e7b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
e7c0: 2f 2f 20 50 6f 70 75 6c 61 74 65 73 20 74 68 65  // Populates the
e7d0: 20 6f 75 74 70 75 74 73 20 6f 66 20 61 20 70 72   outputs of a pr
e7e0: 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69  e-allocated nati
e7f0: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
e800: 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f  _info..        /
e810: 2f 2f 20 73 74 72 75 63 74 75 72 65 20 75 73 69  // structure usi
e820: 6e 67 20 61 6e 20 65 78 69 73 74 69 6e 67 20 3c  ng an existing <
e830: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
e840: 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74  Index" /> object
e850: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
e860: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
e870: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e880: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
e890: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
e8a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
e8b0: 68 65 20 65 78 69 73 74 69 6e 67 20 3c 73 65 65  he existing <see
e8c0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
e8d0: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
e8e0: 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
e8f0: 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  g..        /// t
e900: 68 65 20 6f 75 74 70 75 74 20 64 61 74 61 20 74  he output data t
e910: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
e920: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
e930: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
e940: 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
e950: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
e960: 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
e970: 74 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c 6f 63  to the pre-alloc
e980: 61 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69  ated native sqli
e990: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a  te3_index_info..
e9a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
e9b0: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
e9c0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
e9d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
e9e0: 20 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65 49 6e   name="includeIn
e9f0: 70 75 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  put">..        /
ea00: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69  // Non-zero to i
ea10: 6e 63 6c 75 64 65 20 66 69 65 6c 64 73 20 66 72  nclude fields fr
ea20: 6f 6d 20 74 68 65 20 69 6e 70 75 74 73 20 70 6f  om the inputs po
ea30: 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74  rtion of the nat
ea40: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
ea50: 20 73 74 72 75 63 74 75 72 65 3b 20 6f 74 68 65   structure; othe
ea60: 72 77 69 73 65 2c 20 74 68 65 20 22 69 6e 70 75  rwise, the "inpu
ea70: 74 22 20 66 69 65 6c 64 73 20 77 69 6c 6c 20 6e  t" fields will n
ea80: 6f 74 20 62 65 20 77 72 69 74 74 65 6e 2e 0d 0a  ot be written...
ea90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
eaa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
eab0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f  ternal static vo
eac0: 69 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20  id ToIntPtr(..  
ead0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
eae0: 49 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20  Index index,..  
eaf0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
eb00: 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20   pIndex,..      
eb10: 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63 6c 75        bool inclu
eb20: 64 65 49 6e 70 75 74 0d 0a 20 20 20 20 20 20 20  deInput..       
eb30: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
eb40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
eb50: 66 20 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c  f (index == null
eb60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
eb70: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
eb80: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
eb90: 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75 74  IndexOutputs out
eba0: 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75 74  puts = index.Out
ebb0: 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  puts;....       
ebc0: 20 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73       if (outputs
ebd0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
ebe0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
ebf0: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
ec00: 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
ec10: 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 63  straintUsage[] c
ec20: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20  onstraintUsages 
ec30: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
ec40: 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73 74     outputs.Const
ec50: 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d 0a  raintUsages;....
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ec70: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  constraintUsages
ec80: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
ec90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
eca0: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
ecb0: 20 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70    SQLiteIndexInp
ecc0: 75 74 73 20 69 6e 70 75 74 73 20 3d 20 6e 75 6c  uts inputs = nul
ecd0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
ece0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
ecf0: 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69  raint[] constrai
ed00: 6e 74 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  nts = null;..   
ed10: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
ed20: 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72  ndexOrderBy[] or
ed30: 64 65 72 42 79 73 20 3d 20 6e 75 6c 6c 3b 0d 0a  derBys = null;..
ed40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
ed50: 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d   (includeInput).
ed60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
ed70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed80: 69 6e 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 49  inputs = index.I
ed90: 6e 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  nputs;....      
eda0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
edb0: 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  puts == null).. 
edc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edd0: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
edf0: 6e 73 74 72 61 69 6e 74 73 20 3d 20 69 6e 70 75  nstraints = inpu
ee00: 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 3b 0d  ts.Constraints;.
ee10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ee20: 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e     if (constrain
ee30: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
ee40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee50: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 64 65              orde
ee70: 72 42 79 73 20 3d 20 69 6e 70 75 74 73 2e 4f 72  rBys = inputs.Or
ee80: 64 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20 20 20  derBys;....     
ee90: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
eea0: 72 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29  rderBys == null)
eeb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eec0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20        return;.. 
eed0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
eee0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
eef0: 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72  pIndex == IntPtr
ef00: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
ef10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
ef20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
ef30: 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a  nt offset = 0;..
ef40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
ef50: 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  t nConstraint = 
ef60: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
ef70: 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20  adInt32(pIndex, 
ef80: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
ef90: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c          if (incl
efa0: 75 64 65 49 6e 70 75 74 20 26 26 20 28 6e 43 6f  udeInput && (nCo
efb0: 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73  nstraint != cons
efc0: 74 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68 29 29  traints.Length))
efd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
efe0: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
eff0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 43 6f           if (nCo
f000: 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73  nstraint != cons
f010: 74 72 61 69 6e 74 55 73 61 67 65 73 2e 4c 65 6e  traintUsages.Len
f020: 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20  gth)..          
f030: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
f040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
f050: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
f060: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
f070: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f080: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
f090: 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
f0a0: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
f0b0: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
f0c0: 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20  Input)..        
f0d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f0e0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
f0f0: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69  onstraint = SQLi
f100: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
f110: 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
f120: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
f130: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
f140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
f150: 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61  nt sizeOfConstra
f160: 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68 61  intType = Marsha
f170: 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
f180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f190: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
f1a0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
f1b0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
f1c0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
f1d0: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
f1e0: 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  t iConstraint = 
f1f0: 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c  0; iConstraint <
f200: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43   nConstraint; iC
f210: 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20  onstraint++)..  
f220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f240: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
f250: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
f260: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
f270: 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a  t constraint =..
f280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f290: 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61          new Unsa
f2a0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
f2b0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
f2c0: 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2e0: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
f2f0: 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 29  ts[iConstraint])
f300: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f310: 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
f320: 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28  .StructureToPtr(
f330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f340: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
f350: 61 69 6e 74 2c 20 53 51 4c 69 74 65 4d 61 72 73  aint, SQLiteMars
f360: 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66  hal.IntPtrForOff
f370: 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  set(..          
f380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
f390: 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73  onstraint, iCons
f3a0: 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43  traint * sizeOfC
f3b0: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 2c 0d  onstraintType),.
f3c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f3d0: 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b           false);
f3e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f3f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
f400: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f410: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
f420: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
f430: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
f440: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
f450: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a  IntPtr.Size, siz
f460: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
f470: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f            int nO
f480: 72 64 65 72 42 79 20 3d 20 69 6e 63 6c 75 64 65  rderBy = include
f490: 49 6e 70 75 74 20 3f 0d 0a 20 20 20 20 20 20 20  Input ?..       
f4a0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
f4b0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
f4c0: 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29  (pIndex, offset)
f4d0: 20 3a 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   : 0;....       
f4e0: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
f4f0: 49 6e 70 75 74 20 26 26 20 28 6e 4f 72 64 65 72  Input && (nOrder
f500: 42 79 20 21 3d 20 6f 72 64 65 72 42 79 73 2e 4c  By != orderBys.L
f510: 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20  ength))..       
f520: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
f530: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f540: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
f550: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
f560: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
f570: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
f580: 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74  zeof(int), IntPt
f590: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
f5a0: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c          if (incl
f5b0: 75 64 65 49 6e 70 75 74 29 0d 0a 20 20 20 20 20  udeInput)..     
f5c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f5d0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
f5e0: 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69   pOrderBy = SQLi
f5f0: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
f600: 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66  tPtr(pIndex, off
f610: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
f620: 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
f630: 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d  eOfOrderByType =
f640: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
f650: 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20  typeof(..       
f660: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
f670: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
f680: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
f690: 72 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20 20 20  rderby));....   
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
f6b0: 20 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d   (int iOrderBy =
f6c0: 20 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e   0; iOrderBy < n
f6d0: 4f 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42  OrderBy; iOrderB
f6e0: 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  y++)..          
f6f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f700: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
f710: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
f720: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
f730: 72 64 65 72 62 79 20 6f 72 64 65 72 42 79 20 3d  rderby orderBy =
f740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f750: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
f760: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
f770: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
f780: 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20  orderby(..      
f790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7a0: 20 20 20 20 20 20 6f 72 64 65 72 42 79 73 5b 69        orderBys[i
f7b0: 4f 72 64 65 72 42 79 5d 29 3b 0d 0a 0d 0a 20 20  OrderBy]);....  
f7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7d0: 20 20 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74    Marshal.Struct
f7e0: 75 72 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20  ureToPtr(..     
f7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f800: 20 20 20 6f 72 64 65 72 42 79 2c 20 53 51 4c 69     orderBy, SQLi
f810: 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72  teMarshal.IntPtr
f820: 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20  ForOffset(..    
f830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f840: 20 20 20 20 70 4f 72 64 65 72 42 79 2c 20 69 4f      pOrderBy, iO
f850: 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f  rderBy * sizeOfO
f860: 72 64 65 72 42 79 54 79 70 65 29 2c 0d 0a 20 20  rderByType),..  
f870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f880: 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20        false);.. 
f890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f8a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
f8b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
f8c0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
f8d0: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
f8e0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
f8f0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74       offset, Int
f900: 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72  Ptr.Size, IntPtr
f910: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
f920: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
f930: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
f940: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
f950: 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  eadIntPtr(..    
f960: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
f970: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
f980: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
f990: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
f9a0: 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73  UsageType = Mars
f9b0: 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
f9c0: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
f9d0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
f9e0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
f9f0: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
fa00: 5f 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20 20 20  _usage));....   
fa10: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
fa20: 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  t iConstraint = 
fa30: 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c  0; iConstraint <
fa40: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43   nConstraint; iC
fa50: 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20  onstraint++)..  
fa60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
fa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
fa80: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
fa90: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
faa0: 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
fab0: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  constraintUsage 
fac0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
fad0: 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66         new Unsaf
fae0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
faf0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
fb00: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a  straint_usage(..
fb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb20: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
fb30: 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72  ntUsages[iConstr
fb40: 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint]);....     
fb50: 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
fb60: 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74  al.StructureToPt
fb70: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
fb80: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
fb90: 6e 74 55 73 61 67 65 2c 20 53 51 4c 69 74 65 4d  ntUsage, SQLiteM
fba0: 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72  arshal.IntPtrFor
fbb0: 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
fbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
fbd0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 69  nstraintUsage, i
fbe0: 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a  Constraint * siz
fbf0: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
fc00: 67 65 54 79 70 65 29 2c 0d 0a 20 20 20 20 20 20  geType),..      
fc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61                fa
fc20: 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lse);..         
fc30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
fc40: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
fc50: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
fc60: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
fc70: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
fc80: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
fc90: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
fca0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
fcb0: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
fcc0: 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
fcd0: 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
fce0: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e        outputs.In
fcf0: 64 65 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20  dexNumber);.... 
fd00: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
fd10: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
fd20: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
fd30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fd40: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
fd50: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
fd60: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
fd70: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
fd80: 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 49 6e  .WriteIntPtr(pIn
fd90: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
fdb0: 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
fdc0: 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
fdd0: 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 53 74 72  outputs.IndexStr
fde0: 69 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ing));....      
fdf0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
fe00: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
fe10: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
fe20: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
fe30: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
fe40: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
fe50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
fe60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
fe70: 20 4e 4f 54 45 3a 20 57 65 20 6a 75 73 74 20 61   NOTE: We just a
fe80: 6c 6c 6f 63 61 74 65 64 20 74 68 65 20 49 6e 64  llocated the Ind
fe90: 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64 3b 20  exString field; 
fea0: 74 68 65 72 65 66 6f 72 65 2c 20 77 65 0d 0a 20  therefore, we.. 
feb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
fec0: 20 20 20 20 6e 65 65 64 20 74 6f 20 73 65 74 20      need to set 
fed0: 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20 4e 65  make sure the Ne
fee0: 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72  edToFreeIndexStr
fef0: 69 6e 67 20 66 69 65 6c 64 0d 0a 20 20 20 20 20  ing field..     
ff00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ff10: 69 73 20 6e 6f 6e 2d 7a 65 72 6f 3b 20 68 6f 77  is non-zero; how
ff20: 65 76 65 72 2c 20 77 65 20 61 72 65 20 6e 6f 74  ever, we are not
ff30: 20 70 69 63 6b 79 20 61 62 6f 75 74 20 74 68 65   picky about the
ff40: 20 65 78 61 63 74 0d 0a 20 20 20 20 20 20 20 20   exact..        
ff50: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 6c      //       val
ff60: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue...           
ff70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
ff80: 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49   int needToFreeI
ff90: 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 6f 75 74  ndexString = out
ffa0: 70 75 74 73 2e 4e 65 65 64 54 6f 46 72 65 65 49  puts.NeedToFreeI
ffb0: 6e 64 65 78 53 74 72 69 6e 67 20 21 3d 20 30 20  ndexString != 0 
ffc0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
ffd0: 20 20 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54     outputs.NeedT
ffe0: 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
fff0: 20 3a 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   : 1;....       
10000 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
10010 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49  al.WriteInt32(pI
10020 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20  ndex, offset,.. 
10030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
10040 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
10050 72 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ring);....      
10060 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
10070 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
10080 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
10090 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
100a0 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
100b0 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
100c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
100d0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
100e0 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  eInt32(pIndex, o
100f0 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
10100 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10110 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 29  OrderByConsumed)
10120 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
10130 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
10140 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
10150 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
10160 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
10170 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65  izeof(int), size
10180 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a  of(double));....
10190 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
101a0 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65  outputs.Estimate
101b0 64 43 6f 73 74 2e 48 61 73 56 61 6c 75 65 29 0d  dCost.HasValue).
101c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
101d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101e0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
101f0 69 74 65 44 6f 75 62 6c 65 28 70 49 6e 64 65 78  iteDouble(pIndex
10200 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
10210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10220 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
10230 43 6f 73 74 2e 47 65 74 56 61 6c 75 65 4f 72 44  Cost.GetValueOrD
10240 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20  efault());..    
10250 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10260 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
10270 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
10280 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
10290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
102a0 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f  ffset, sizeof(do
102b0 75 62 6c 65 29 2c 20 73 69 7a 65 6f 66 28 6c 6f  uble), sizeof(lo
102c0 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng));....       
102d0 20 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73       if (outputs
102e0 2e 43 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64  .CanUseEstimated
102f0 52 6f 77 73 28 29 20 26 26 0d 0a 20 20 20 20 20  Rows() &&..     
10300 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
10310 74 73 2e 45 73 74 69 6d 61 74 65 64 52 6f 77 73  ts.EstimatedRows
10320 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20 20  .HasValue)..    
10330 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10340 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
10350 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
10360 74 36 34 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t64(pIndex, offs
10370 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
10380 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
10390 2e 45 73 74 69 6d 61 74 65 64 52 6f 77 73 2e 47  .EstimatedRows.G
103a0 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74  etValueOrDefault
103b0 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ());..          
103c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
103d0 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
103e0 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
103f0 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
10400 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
10410 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20 73   sizeof(long), s
10420 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
10430 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
10440 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 49 6e  outputs.CanUseIn
10450 64 65 78 46 6c 61 67 73 28 29 20 26 26 0d 0a 20  dexFlags() &&.. 
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10470 75 74 70 75 74 73 2e 49 6e 64 65 78 46 6c 61 67  utputs.IndexFlag
10480 73 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20  s.HasValue)..   
10490 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
104a0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
104b0 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
104c0 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
104d0 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
104e0 20 20 20 20 20 20 20 20 20 28 69 6e 74 29 6f 75           (int)ou
104f0 74 70 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73  tputs.IndexFlags
10500 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75  .GetValueOrDefau
10510 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  lt());..        
10520 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10530 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
10540 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
10550 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
10560 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
10570 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
10580 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a  sizeof(long));..
10590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
105a0 20 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65   (outputs.CanUse
105b0 43 6f 6c 75 6d 6e 73 55 73 65 64 28 29 20 26 26  ColumnsUsed() &&
105c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
105d0 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d 6e    outputs.Column
105e0 73 55 73 65 64 2e 48 61 73 56 61 6c 75 65 29 0d  sUsed.HasValue).
105f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
10600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10610 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
10620 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78 2c  iteInt64(pIndex,
10630 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
10640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
10650 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73 55 73 65  tputs.ColumnsUse
10660 64 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61  d.GetValueOrDefa
10670 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ult());..       
10680 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10690 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
106a0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
106b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
106c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
10700 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
10710 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
10720 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
10730 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73  QLiteIndexInputs
10740 20 69 6e 70 75 74 73 3b 0d 0a 20 20 20 20 20 20   inputs;..      
10750 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
10770 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
10780 74 65 49 6e 64 65 78 49 6e 70 75 74 73 22 20 2f  teIndexInputs" /
10790 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
107a0 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  e containing..  
107b0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e        /// the in
107c0 70 75 74 73 20 74 6f 20 74 68 65 20 3c 73 65 65  puts to the <see
107d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
107e0 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
107f0 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20  Index" />..     
10800 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
10810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
10820 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
10830 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
10840 65 78 49 6e 70 75 74 73 20 49 6e 70 75 74 73 0d  exInputs Inputs.
10850 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
10860 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
10870 74 75 72 6e 20 69 6e 70 75 74 73 3b 20 7d 0d 0a  turn inputs; }..
10880 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10890 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
108a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108c0 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
108e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
108f0 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
10900 74 73 20 6f 75 74 70 75 74 73 3b 0d 0a 20 20 20  ts outputs;..   
10910 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
10920 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
10930 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
10940 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
10950 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  s" /> object ins
10960 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  tance containing
10970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
10980 65 20 6f 75 74 70 75 74 73 20 66 72 6f 6d 20 74  e outputs from t
10990 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
109a0 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
109b0 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
109c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
109d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
109e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
109f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
10a00 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
10a10 20 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 20 20   Outputs..      
10a20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10a30 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 75   get { return ou
10a40 74 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20  tputs; }..      
10a50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
10a60 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
10a70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
10a80 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
10a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ab0 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
10ae0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
10af0 62 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a  ble Base Class..
10b00 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10b10 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
10b20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
10b30 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75   a managed virtu
10b40 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  al table impleme
10b50 6e 74 61 74 69 6f 6e 2e 20 20 49 74 20 69 73 0d  ntation.  It is.
10b60 0a 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 73 65 61  .    /// not sea
10b70 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20 62  led and should b
10b80 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61  e used as the ba
10b90 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79  se class for any
10ba0 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0d 0a 20   user-defined.. 
10bb0 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
10bc0 61 62 6c 65 20 63 6c 61 73 73 65 73 20 69 6d 70  able classes imp
10bd0 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61  lemented in mana
10be0 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f  ged code...    /
10bf0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10c00 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20     public class 
10c10 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
10c20 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  le :..          
10c30 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48    ISQLiteNativeH
10c40 61 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62  andle, IDisposab
10c50 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44  le /* NOT SEALED
10c60 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20   */..    {..    
10c70 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
10c80 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
10c90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
10ca0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
10cb0 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68  / The index with
10cc0 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  in the array of 
10cd0 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64  strings provided
10ce0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
10cf0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
10d00 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
10d10 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
10d20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
10d30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
10d40 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
10d50 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  .Connect" /> met
10d60 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  hods containing 
10d70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
10d80 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64   name of the mod
10d90 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67  ule implementing
10da0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
10db0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
10dc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10dd0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
10de0 6e 73 74 20 69 6e 74 20 4d 6f 64 75 6c 65 4e 61  nst int ModuleNa
10df0 6d 65 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 0d 0a  meIndex = 0;....
10e00 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e30 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
10e50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
10e60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10e70 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20    /// The index 
10e80 77 69 74 68 69 6e 20 74 68 65 20 61 72 72 61 79  within the array
10e90 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76   of strings prov
10ea0 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20  ided to the..   
10eb0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
10ec0 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
10ed0 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22  edModule.Create"
10ee0 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20   /> and..       
10ef0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
10f00 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
10f10 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e  dule.Connect" />
10f20 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e   methods contain
10f30 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
10f40 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65   /// name of the
10f50 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61 69   database contai
10f60 6e 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61  ning this virtua
10f70 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
10f80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
10f90 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
10fa0 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 61 74 61  e const int Data
10fb0 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  baseNameIndex = 
10fc0 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  1;....        //
10fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
11020 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11030 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11040 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65  index within the
11050 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67   array of string
11060 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
11070 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
11080 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
11090 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
110a0 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20  reate" /> and.. 
110b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
110c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
110d0 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
110e0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63  ct" /> methods c
110f0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20  ontaining the.. 
11100 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20         /// name 
11110 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  of the virtual t
11120 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
11130 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11140 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
11150 6f 6e 73 74 20 69 6e 74 20 54 61 62 6c 65 4e 61  onst int TableNa
11160 6d 65 49 6e 64 65 78 20 3d 20 32 3b 0d 0a 20 20  meIndex = 2;..  
11170 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
11180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
11190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
111e0 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f  region Public Co
111f0 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
11200 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11210 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
11220 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
11230 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
11240 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
11250 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11260 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
11270 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73   name="arguments
11280 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
11290 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72  The original arr
112a0 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
112b0 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
112c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
112d0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
112e0 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
112f0 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
11300 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
11310 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
11320 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
11330 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  /> methods...   
11340 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
11350 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
11360 63 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  c SQLiteVirtualT
11370 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
11380 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75     string[] argu
11390 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20  ments..         
113a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
113b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
113c0 73 2e 61 72 67 75 6d 65 6e 74 73 20 3d 20 61 72  s.arguments = ar
113d0 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20  guments;..      
113e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
113f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
11400 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11430 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
11450 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
11460 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  blic Properties.
11470 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
11480 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65   string[] argume
11490 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nts;..        //
114a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
114b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69       /// The ori
114c0 67 69 6e 61 6c 20 61 72 72 61 79 20 6f 66 20 73  ginal array of s
114d0 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20  trings provided 
114e0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
114f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
11500 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
11510 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61  ule.Create" /> a
11520 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
11530 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
11540 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
11550 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
11560 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
11570 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11580 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
11590 74 75 61 6c 20 73 74 72 69 6e 67 5b 5d 20 41 72  tual string[] Ar
115a0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20  guments..       
115b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
115c0 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
115d0 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 61 72  sed(); return ar
115e0 67 75 6d 65 6e 74 73 3b 20 7d 0d 0a 20 20 20 20  guments; }..    
115f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11600 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
11650 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11660 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11670 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d  he name of the m
11680 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69  odule implementi
11690 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  ng this virtual 
116a0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
116b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
116c0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
116d0 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 4d 6f  irtual string Mo
116e0 64 75 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  duleName..      
116f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11700 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
11710 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11720 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
11730 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
11740 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
11750 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72  ] arguments = Ar
11760 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20  guments;....    
11770 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11780 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75  (arguments != nu
11790 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
117a0 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67              (arg
117b0 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20  uments.Length > 
117c0 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 29  ModuleNameIndex)
117d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
117e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
117f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11800 20 61 72 67 75 6d 65 6e 74 73 5b 4d 6f 64 75 6c   arguments[Modul
11810 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20  eNameIndex];..  
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
11830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11840 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
11850 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11870 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
11880 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
11890 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
118a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
118b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
118c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
118d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
118e0 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
11900 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
11910 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
11920 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
11930 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61 69   database contai
11940 6e 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61  ning this virtua
11950 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
11960 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11970 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
11980 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20   virtual string 
11990 44 61 74 61 62 61 73 65 4e 61 6d 65 0d 0a 20 20  DatabaseName..  
119a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
119b0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
119c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
119d0 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
119e0 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
119f0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
11a00 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20  ing[] arguments 
11a10 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a  = Arguments;....
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a30 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21  if ((arguments !
11a40 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20  = null) &&..    
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a60 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74  (arguments.Lengt
11a70 68 20 3e 20 44 61 74 61 62 61 73 65 4e 61 6d 65  h > DatabaseName
11a80 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
11a90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ab0 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73  return arguments
11ac0 5b 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64  [DatabaseNameInd
11ad0 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ex];..          
11ae0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11af0 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
11b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
11b10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
11b30 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
11b40 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
11b50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
11b60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
11b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
11bc0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11bd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
11be0 65 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  e of the virtual
11bf0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
11c00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11c10 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
11c20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 54  virtual string T
11c30 61 62 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  ableName..      
11c40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11c50 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
11c60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11c70 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
11c80 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
11c90 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
11ca0 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72  ] arguments = Ar
11cb0 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20  guments;....    
11cc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11cd0 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75  (arguments != nu
11ce0 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67              (arg
11d00 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20  uments.Length > 
11d10 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29  TableNameIndex))
11d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11d30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11d40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11d50 61 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e  arguments[TableN
11d60 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20  ameIndex];..    
11d70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
11d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
11d90 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
11da0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11db0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11dc0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
11dd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11de0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11df0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11e00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
11e50 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
11e60 74 65 49 6e 64 65 78 20 69 6e 64 65 78 3b 0d 0a  teIndex index;..
11e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
11e80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
11e90 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
11ea0 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
11eb0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
11ec0 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c  e containing all
11ed0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
11ee0 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 69  / data for the i
11ef0 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74  nputs and output
11f00 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 74 68  s relating to th
11f10 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 69 6e  e most recent in
11f20 64 65 78 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  dex..        ///
11f30 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20   selection...   
11f40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11f50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
11f60 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69  lic virtual SQLi
11f70 74 65 49 6e 64 65 78 20 49 6e 64 65 78 0d 0a 20  teIndex Index.. 
11f80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11f90 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
11fa0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
11fb0 75 72 6e 20 69 6e 64 65 78 3b 20 7d 0d 0a 20 20  urn index; }..  
11fc0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11fd0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
11fe0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12010 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
12030 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
12040 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
12050 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
12060 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12070 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
12080 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79   should normally
12090 20 62 65 20 75 73 65 64 20 62 79 20 74 68 65 0d   be used by the.
120a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
120b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
120c0 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
120d0 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
120e0 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20  d in order to.. 
120f0 20 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f         /// perfo
12100 72 6d 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69  rm index selecti
12110 6f 6e 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  on based on the 
12120 63 6f 6e 73 74 72 61 69 6e 74 73 20 70 72 6f 76  constraints prov
12130 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  ided by the..   
12140 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20       /// SQLite 
12150 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
12160 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
12170 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
12180 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
12190 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
121a0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
121b0 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
121c0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
121d0 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61  nce containing a
121e0 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ll the..        
121f0 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65  /// data for the
12200 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70   inputs and outp
12210 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20  uts relating to 
12220 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e  index selection.
12230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12240 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
12250 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
12260 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
12270 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73  ero upon success
12280 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12290 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
122a0 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
122b0 6c 20 62 6f 6f 6c 20 42 65 73 74 49 6e 64 65 78  l bool BestIndex
122c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
122d0 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78  QLiteIndex index
122e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
122f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
12300 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
12310 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
12320 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64          this.ind
12330 65 78 20 3d 20 69 6e 64 65 78 3b 0d 0a 0d 0a 20  ex = index;.... 
12340 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12350 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
12360 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
12370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
123c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
123d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65          /// Atte
123e0 6d 70 74 73 20 74 6f 20 72 65 63 6f 72 64 20 74  mpts to record t
123f0 68 65 20 72 65 6e 61 6d 69 6e 67 20 6f 66 20 74  he renaming of t
12400 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
12410 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
12420 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
12430 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
12440 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
12450 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12460 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
12470 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
12480 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65        /// The ne
12490 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76  w name for the v
124a0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
124b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
124c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
124d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
124e0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
124f0 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
12500 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
12510 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
12520 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62  public virtual b
12530 6f 6f 6c 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20  ool Rename(..   
12540 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
12550 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
12560 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
12570 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
12580 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
12590 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
125a0 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75  (arguments != nu
125b0 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
125c0 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e          (argumen
125d0 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c  ts.Length > Tabl
125e0 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20  eNameIndex))..  
125f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12600 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
12610 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65  uments[TableName
12620 49 6e 64 65 78 5d 20 3d 20 6e 61 6d 65 3b 0d 0a  Index] = name;..
12630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12640 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
12650 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12660 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12670 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
12680 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
12690 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
126a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
126b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126d0 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
126f0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53        #region IS
12700 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
12710 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
12720 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
12730 72 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d  r nativeHandle;.
12740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12750 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12760 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
12770 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74  underlying SQLit
12780 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20  e native handle 
12790 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
127a0 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
127b0 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
127c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
127d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
127e0 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
127f0 61 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65  al IntPtr Native
12800 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20  Handle..        
12810 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
12820 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
12830 65 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74  ed(); return nat
12840 69 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20  iveHandle; }..  
12850 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e            intern
12860 61 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48  al set { nativeH
12870 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d  andle = value; }
12880 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
12890 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
128a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
128b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
12900 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
12910 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
12920 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69  ..        /// Di
12940 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f  sposes of this o
12950 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
12960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
12970 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12980 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
12990 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20  pose()..        
129a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
129b0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
129c0 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
129d0 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
129e0 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
129f0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
12a00 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
12a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12a60 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
12a70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22  osable "Pattern"
12a80 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
12a90 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
12aa0 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20  isposed;..      
12ab0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72  .        /// Thr
12ad0 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  ows an <see cref
12ae0 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  ="ObjectDisposed
12af0 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66  Exception" /> if
12b00 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20   this object..  
12b10 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
12b20 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70  ce has been disp
12b30 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  osed...        /
12b40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12b50 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76         private v
12b60 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65  oid CheckDispose
12b70 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  d() /* throw */.
12b80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
12b90 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45  THROW_ON_DISPOSE
12ba0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  D..            i
12bb0 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20  f (disposed)..  
12bc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
12be0 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73  ow new ObjectDis
12bf0 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d  posedException(.
12c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12c10 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69       typeof(SQLi
12c20 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 29 2e  teVirtualTable).
12c30 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
12c40 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
12c50 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12c60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c90 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
12cb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
12cc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
12cd0 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68  / Disposes of th
12ce0 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
12cf0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
12d00 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12d10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
12d20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22  name="disposing"
12d30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
12d40 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20  on-zero if this 
12d50 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20  method is being 
12d60 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d  called from the.
12d70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
12d80 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28  e cref="Dispose(
12d90 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a  )" /> method.  Z
12da0 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68  ero if this meth
12db0 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c  od is being call
12dc0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
12dd0 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a  from the finaliz
12de0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
12df0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
12e00 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
12e10 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73  tual void Dispos
12e20 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
12e30 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
12e40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
12e50 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
12e60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12e70 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64           //if (d
12e80 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
12e90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
12ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12eb0 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
12ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
12ee0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
12ef0 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
12f00 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
12f10 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
12f20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
12f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
12f60 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
12f70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
12f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fa0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12fb0 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e     // release un
12fc0 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
12fd0 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
12fe0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
12ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13010 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
13020 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
13030 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
13040 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
13050 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
13060 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
13070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
130c0 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75    #region Destru
130d0 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ctor..        //
130e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
130f0 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a       /// Finaliz
13100 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  es this object i
13110 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
13120 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13130 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74  ..        ~SQLit
13140 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28 29 0d  eVirtualTable().
13150 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
13160 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
13170 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
13180 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
13190 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
131a0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
131b0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
131c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
131d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
131e0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
13210 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
13220 6c 65 43 75 72 73 6f 72 20 42 61 73 65 20 43 6c  leCursor Base Cl
13230 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
13240 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
13250 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65  This class repre
13260 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20  sents a managed 
13270 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
13280 72 73 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rsor implementat
13290 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74  ion...    /// It
132a0 20 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61   is not sealed a
132b0 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  nd should be use
132c0 64 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c  d as the base cl
132d0 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20  ass for any..   
132e0 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69 6e 65   /// user-define
132f0 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
13300 63 75 72 73 6f 72 20 63 6c 61 73 73 65 73 20 69  cursor classes i
13310 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61  mplemented in ma
13320 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20  naged code...   
13330 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13340 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73  .    public clas
13350 73 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  s SQLiteVirtualT
13360 61 62 6c 65 43 75 72 73 6f 72 20 3a 0d 0a 20 20  ableCursor :..  
13370 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74            ISQLit
13380 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49  eNativeHandle, I
13390 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f  Disposable /* NO
133a0 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20  T SEALED */..   
133b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
133c0 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 43 6f  ion Protected Co
133d0 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20  nstants..       
133e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
133f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
13400 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
13410 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 69 6e 74  s an invalid int
13420 65 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63  eger row sequenc
13430 65 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  e number...     
13440 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13450 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
13460 63 74 65 64 20 73 74 61 74 69 63 20 72 65 61 64  cted static read
13470 6f 6e 6c 79 20 69 6e 74 20 49 6e 76 61 6c 69 64  only int Invalid
13480 52 6f 77 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20  RowIndex = 0;.. 
13490 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
134a0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
134b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13500 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
13510 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Data..        //
13520 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13530 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 65       /// The fie
13540 6c 64 20 68 6f 6c 64 73 20 74 68 65 20 69 6e 74  ld holds the int
13550 65 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63  eger row sequenc
13560 65 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65  e number for the
13570 20 63 75 72 72 65 6e 74 20 72 6f 77 0d 0a 20 20   current row..  
13580 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65        /// pointe
13590 64 20 74 6f 20 62 79 20 74 68 69 73 20 63 75 72  d to by this cur
135a0 73 6f 72 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  sor object insta
135b0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
135c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
135d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
135e0 74 20 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20  t rowIndex;..   
135f0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
13600 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
13660 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
13670 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
13680 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
136a0 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
136b0 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
136c0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
136d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
136e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
136f0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
13700 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
13710 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
13720 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
13730 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
13740 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
13750 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
13760 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
13770 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
13780 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
13790 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
137a0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
137b0 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
137c0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
137d0 62 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ble table..     
137e0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
137f0 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
13800 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13810 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c         this.tabl
13820 65 20 3d 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20  e = table;..    
13830 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
13840 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
13850 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13880 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
138a0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
138b0 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63  Private Construc
138c0 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
138d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
138e0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
138f0 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
13900 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  of this class...
13910 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
13920 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13930 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56 69  private SQLiteVi
13940 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
13950 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
13960 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 49 6e             rowIn
13970 64 65 78 20 3d 20 49 6e 76 61 6c 69 64 52 6f 77  dex = InvalidRow
13980 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20  Index;..        
13990 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
139a0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
139b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
139c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
13a00 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
13a10 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
13a20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
13a30 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
13a40 65 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20  e table;..      
13a50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13a60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
13a70 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
13a80 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
13a90 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
13aa0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
13ab0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
13ac0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
13ad0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
13ae0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13af0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
13b00 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74  rtual SQLiteVirt
13b10 75 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 0d 0a  ualTable Table..
13b20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13b30 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
13b40 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
13b50 74 75 72 6e 20 74 61 62 6c 65 3b 20 7d 0d 0a 20  turn table; }.. 
13b60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13b70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ba0 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
13bc0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69         private i
13bd0 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d  nt indexNumber;.
13be0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13bf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13c00 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64 20  /// Number used 
13c10 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
13c20 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
13c30 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65  dex.  This value
13c40 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
13c50 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68  // be set via th
13c60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c  e <see cref="Fil
13c70 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
13c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
13c90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13ca0 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
13cb0 69 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d  int IndexNumber.
13cc0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
13cd0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68          get { Ch
13ce0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
13cf0 65 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65  eturn indexNumbe
13d00 72 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  r; }..        }.
13d10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
13d70 69 76 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64  ivate string ind
13d80 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20  exString;..     
13d90 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13da0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74  ..        /// St
13db0 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c  ring used to hel
13dc0 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73  p identify the s
13dd0 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20  elected index.  
13de0 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d  This value will.
13df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  .        /// be 
13e00 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65 65  set via the <see
13e10 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20 2f   cref="Filter" /
13e20 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
13e30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13e40 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
13e50 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
13e60 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20   IndexString..  
13e70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13e80 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
13e90 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
13ea0 72 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 20  rn indexString; 
13eb0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
13ec0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
13ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ef0 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
13f10 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
13f20 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d  te SQLiteValue[]
13f30 20 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20   values;..      
13f40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13f50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
13f60 20 76 61 6c 75 65 73 20 75 73 65 64 20 74 6f 20   values used to 
13f70 66 69 6c 74 65 72 20 74 68 65 20 72 6f 77 73 20  filter the rows 
13f80 72 65 74 75 72 6e 65 64 20 76 69 61 20 74 68 69  returned via thi
13f90 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 0d  s cursor object.
13fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
13fb0 74 61 6e 63 65 2e 20 20 54 68 69 73 20 76 61 6c  tance.  This val
13fc0 75 65 20 77 69 6c 6c 20 62 65 20 73 65 74 20 76  ue will be set v
13fd0 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
13fe0 3d 22 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20  ="Filter" />..  
13ff0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
14000 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14010 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14020 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
14030 6c 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20  l SQLiteValue[] 
14040 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20  Values..        
14050 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
14060 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
14070 65 64 28 29 3b 20 72 65 74 75 72 6e 20 76 61 6c  ed(); return val
14080 75 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ues; }..        
14090 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
140a0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
140b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
140c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
14100 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74      #region Prot
14110 65 63 74 65 64 20 4d 65 74 68 6f 64 73 0d 0a 20  ected Methods.. 
14120 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
14130 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
14140 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 70 65  / Attempts to pe
14150 72 73 69 73 74 20 74 68 65 20 73 70 65 63 69 66  rsist the specif
14160 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
14170 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f  QLiteValue" /> o
14180 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
14190 2f 2f 20 69 6e 73 74 61 6e 63 65 73 20 69 6e 20  // instances in 
141a0 6f 72 64 65 72 20 74 6f 20 6d 61 6b 65 20 74 68  order to make th
141b0 65 6d 20 61 76 61 69 6c 61 62 6c 65 20 61 66 74  em available aft
141c0 65 72 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  er the..        
141d0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
141e0 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
141f0 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d  ule.Filter" /> m
14200 65 74 68 6f 64 20 72 65 74 75 72 6e 73 2e 0d 0a  ethod returns...
14210 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
14220 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14230 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
14240 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20  "values">..     
14250 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
14260 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
14270 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f  QLiteValue" /> o
14280 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20  bject instances 
14290 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  to be..        /
142a0 2f 2f 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20  // persisted... 
142b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
142c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
142d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
142e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
142f0 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  er of <see cref=
14300 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e  "SQLiteValue" />
14310 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
14320 73 20 74 68 61 74 20 77 65 72 65 0d 0a 20 20 20  s that were..   
14330 20 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73       /// success
14340 66 75 6c 6c 79 20 70 65 72 73 69 73 74 65 64 2e  fully persisted.
14350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14360 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
14370 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
14380 75 61 6c 20 69 6e 74 20 54 72 79 50 65 72 73 69  ual int TryPersi
14390 73 74 56 61 6c 75 65 73 28 0d 0a 20 20 20 20 20  stValues(..     
143a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c         SQLiteVal
143b0 75 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20  ue[] values..   
143c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
143d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
143e0 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20     int result = 
143f0 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
14400 20 20 69 66 20 28 76 61 6c 75 65 73 20 21 3d 20    if (values != 
14410 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
14420 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14430 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 53        foreach (S
14440 51 4c 69 74 65 56 61 6c 75 65 20 76 61 6c 75 65  QLiteValue value
14450 20 69 6e 20 76 61 6c 75 65 73 29 0d 0a 20 20 20   in values)..   
14460 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14480 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
14490 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
144a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144b0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
144c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144d0 20 69 66 20 28 76 61 6c 75 65 2e 50 65 72 73 69   if (value.Persi
144e0 73 74 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  st())..         
144f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
14500 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20  esult++;..      
14510 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
14520 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
14530 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14540 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
14550 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
14560 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
14570 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145a0 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
145c0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
145d0 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
145e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
145f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
14600 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68 6f   This method sho
14610 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20  uld normally be 
14620 75 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  used by the..   
14630 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
14640 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
14650 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22  edModule.Filter"
14660 20 2f 3e 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72   /> method in or
14670 64 65 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  der to..        
14680 2f 2f 2f 20 70 65 72 66 6f 72 6d 20 66 69 6c 74  /// perform filt
14690 65 72 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73  ering of the res
146a0 75 6c 74 20 72 6f 77 73 20 61 6e 64 2f 6f 72 20  ult rows and/or 
146b0 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20 66 69  to record the fi
146c0 6c 74 65 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  ltering..       
146d0 20 2f 2f 2f 20 63 72 69 74 65 72 69 61 20 70 72   /// criteria pr
146e0 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51  ovided by the SQ
146f0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
14700 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
14710 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14720 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
14730 61 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72  ame="indexNumber
14740 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
14750 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68  Number used to h
14760 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
14770 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
14780 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14790 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
147a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
147b0 22 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a  "indexString">..
147c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69          /// Stri
147d0 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  ng used to help 
147e0 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
147f0 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20  ected index...  
14800 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
14810 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
14820 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
14830 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ues">..        /
14840 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f  // The values co
14850 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65  rresponding to e
14860 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68  ach column in th
14870 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
14880 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14890 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
148a0 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
148b0 76 6f 69 64 20 46 69 6c 74 65 72 28 0d 0a 20 20  void Filter(..  
148c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
148d0 64 65 78 4e 75 6d 62 65 72 2c 0d 0a 20 20 20 20  dexNumber,..    
148e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 69          string i
148f0 6e 64 65 78 53 74 72 69 6e 67 2c 0d 0a 20 20 20  ndexString,..   
14900 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
14910 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20  alue[] values.. 
14920 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
14930 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14940 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
14950 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
14960 20 20 20 20 20 69 66 20 28 28 76 61 6c 75 65 73       if ((values
14970 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
14980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 54                (T
14990 72 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28  ryPersistValues(
149a0 76 61 6c 75 65 73 29 20 21 3d 20 76 61 6c 75 65  values) != value
149b0 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20  s.Length))..    
149c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
149d0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
149e0 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70   new SQLiteExcep
149f0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
14a00 20 20 20 20 20 20 20 20 20 20 20 22 66 61 69 6c             "fail
14a10 65 64 20 74 6f 20 70 65 72 73 69 73 74 20 6f 6e  ed to persist on
14a20 65 20 6f 72 20 6d 6f 72 65 20 76 61 6c 75 65 73  e or more values
14a30 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
14a40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
14a50 20 20 74 68 69 73 2e 69 6e 64 65 78 4e 75 6d 62    this.indexNumb
14a60 65 72 20 3d 20 69 6e 64 65 78 4e 75 6d 62 65 72  er = indexNumber
14a70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
14a80 68 69 73 2e 69 6e 64 65 78 53 74 72 69 6e 67 20  his.indexString 
14a90 3d 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a  = indexString;..
14aa0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
14ab0 2e 76 61 6c 75 65 73 20 3d 20 76 61 6c 75 65 73  .values = values
14ac0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
14ad0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
14b20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14b30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14b40 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
14b50 20 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77   the integer row
14b60 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72   sequence number
14b70 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
14b80 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f   row...        /
14b90 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14ba0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
14bb0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
14bc0 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 72 6f  / The integer ro
14bd0 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65  w sequence numbe
14be0 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  r for the curren
14bf0 74 20 72 6f 77 20 2d 4f 52 2d 20 7a 65 72 6f 20  t row -OR- zero 
14c00 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  if..        /// 
14c10 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
14c20 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
14c30 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
14c40 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
14c50 20 76 69 72 74 75 61 6c 20 69 6e 74 20 47 65 74   virtual int Get
14c60 52 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20  RowIndex()..    
14c70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14c80 20 20 20 72 65 74 75 72 6e 20 72 6f 77 49 6e 64     return rowInd
14c90 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ex;..        }..
14ca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
14d00 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14d10 20 20 20 20 2f 2f 2f 20 41 64 6a 75 73 74 73 20      /// Adjusts 
14d20 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20  the integer row 
14d30 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20  sequence number 
14d40 73 6f 20 74 68 61 74 20 69 74 20 72 65 66 65 72  so that it refer
14d50 73 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  s to the..      
14d60 20 20 2f 2f 2f 20 6e 65 78 74 20 72 6f 77 2e 0d    /// next row..
14d70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
14d80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14d90 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
14da0 76 6f 69 64 20 4e 65 78 74 52 6f 77 49 6e 64 65  void NextRowInde
14db0 78 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  x()..        {..
14dc0 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 49              rowI
14dd0 6e 64 65 78 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  ndex++;..       
14de0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
14df0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
14e00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e30 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
14e50 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
14e60 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
14e70 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
14e80 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
14e90 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a   nativeHandle;..
14ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14eb0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14ec0 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 75  // Returns the u
14ed0 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65  nderlying SQLite
14ee0 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61   native handle a
14ef0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
14f00 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
14f10 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
14f20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14f30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14f40 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
14f50 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48  l IntPtr NativeH
14f60 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  andle..        {
14f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
14f80 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
14f90 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69  d(); return nati
14fa0 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20  veHandle; }..   
14fb0 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61           interna
14fc0 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61  l set { nativeHa
14fd0 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ndle = value; }.
14fe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
14ff0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15000 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15030 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
15060 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
15070 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
15080 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15090 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
150a0 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
150b0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
150c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
150d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
150e0 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
150f0 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ose()..        {
15100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
15110 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
15120 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70            GC.Sup
15130 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
15140 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  is);..        }.
15150 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
15160 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
15170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
151c0 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
151d0 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20  sable "Pattern" 
151e0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
151f0 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69   private bool di
15200 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20  sposed;..       
15210 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15220 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f          /// Thro
15230 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  ws an <see cref=
15240 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45  "ObjectDisposedE
15250 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20  xception" /> if 
15260 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
15270 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
15280 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f  e has been dispo
15290 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
152a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
152b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
152c0 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
152d0 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
152e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
152f0 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
15300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
15310 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20   (disposed)..   
15320 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15330 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
15340 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
15350 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
15360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15370 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
15380 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
15390 73 6f 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  sor).Name);..   
153a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
153b0 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
153c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
153d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153f0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
15420 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15430 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
15440 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
15450 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
15460 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
15480 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f  aram name="dispo
15490 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  sing">..        
154a0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
154b0 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
154c0 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d  eing called from
154d0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
154e0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73  / <see cref="Dis
154f0 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f  pose()" /> metho
15500 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73  d.  Zero if this
15510 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
15520 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20   called..       
15530 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66 69   /// from the fi
15540 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20  nalizer...      
15550 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
15560 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
15570 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44  d virtual void D
15580 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
15590 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
155a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
155b0 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
155c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
155d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
155e0 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a  if (disposing)..
155f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15600 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  //{..           
15610 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
15620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15650 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73   //    // dispos
15660 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
15670 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
15680 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15690 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
156a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
156c0 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a           //}....
156d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
15710 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61          // relea
15720 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73  se unmanaged res
15730 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
15740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15770 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15780 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
15790 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
157a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
157b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
157c0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
157d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
157e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15800 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
15820 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
15830 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
15840 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69  ..        /// Fi
15860 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a  nalizes this obj
15870 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
15880 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15890 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e  mary>..        ~
158a0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
158b0 6c 65 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20  leCursor()..    
158c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
158d0 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
158e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
158f0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
15900 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
15910 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
15920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20  ///////////.... 
15970 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
15980 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 49  teNativeHandle I
15990 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f  nterface..    //
159a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
159b0 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66   /// This interf
159c0 61 63 65 20 72 65 70 72 65 73 65 6e 74 73 20 61  ace represents a
159d0 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 70   native handle p
159e0 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53  rovided by the S
159f0 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
15a00 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  /// library...  
15a10 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15a20 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74  ..    public int
15a30 65 72 66 61 63 65 20 49 53 51 4c 69 74 65 4e 61  erface ISQLiteNa
15a40 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20  tiveHandle..    
15a50 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
15a60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15a70 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
15a80 20 68 61 6e 64 6c 65 20 76 61 6c 75 65 2e 0d 0a   handle value...
15a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
15aa0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15ab0 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
15ac0 64 6c 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20  dle { get; }..  
15ad0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
15ae0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
15af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
15b40 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e  egion ISQLiteMan
15b50 61 67 65 64 4d 6f 64 75 6c 65 20 49 6e 74 65 72  agedModule Inter
15b60 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  face..    /// <s
15b70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
15b80 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20   This interface 
15b90 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 69 72  represents a vir
15ba0 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
15bb0 6d 65 6e 74 61 74 69 6f 6e 20 77 72 69 74 74 65  mentation writte
15bc0 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61  n in..    /// ma
15bd0 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20  naged code...   
15be0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15bf0 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65  .    public inte
15c00 72 66 61 63 65 20 49 53 51 4c 69 74 65 4d 61 6e  rface ISQLiteMan
15c10 61 67 65 64 4d 6f 64 75 6c 65 0d 0a 20 20 20 20  agedModule..    
15c20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
15c30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15c40 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f    /// Returns no
15c50 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 63  n-zero if the sc
15c60 68 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72  hema for the vir
15c70 74 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20 62  tual table has b
15c80 65 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  een..        ///
15c90 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
15ca0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15cb0 79 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  y>..        bool
15cc0 20 44 65 63 6c 61 72 65 64 20 7b 20 67 65 74 3b   Declared { get;
15cd0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15d30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
15d50 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  rns the name of 
15d60 74 68 65 20 6d 6f 64 75 6c 65 20 61 73 20 69 74  the module as it
15d70 20 77 61 73 20 72 65 67 69 73 74 65 72 65 64 20   was registered 
15d80 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 0d  with the SQLite.
15d90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72  .        /// cor
15da0 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
15db0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15dc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  y>..        stri
15dd0 6e 67 20 4e 61 6d 65 20 7b 20 67 65 74 3b 20 7d  ng Name { get; }
15de0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
15df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
15e40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15e50 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
15e60 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
15e70 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
15e80 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
15e90 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
15ea0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
15eb0 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
15ec0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
15ed0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15ee0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
15ef0 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22  ame="connection"
15f00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
15f10 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
15f20 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20  LiteConnection" 
15f30 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
15f40 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ce associated wi
15f50 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
15f60 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
15f70 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
15f80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
15f90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
15fa0 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e  e="pClientData">
15fb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15fc0 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  e native user-da
15fd0 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
15fe0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
15ff0 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61  module, as it wa
16000 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  s..        /// p
16010 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
16020 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
16030 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
16040 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e  ve module instan
16050 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
16060 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20  was created...  
16070 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16080 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16090 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
160a0 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
160b0 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65    /// The module
160c0 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20   name, database 
160d0 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61  name, virtual ta
160e0 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c  ble name, and al
160f0 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  l other..       
16100 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70   /// arguments p
16110 61 73 73 65 64 20 74 6f 20 74 68 65 20 43 52 45  assed to the CRE
16120 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
16130 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  E statement...  
16140 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16150 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16160 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
16170 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
16180 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
16190 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
161a0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
161b0 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
161c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
161d0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
161e0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
161f0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
16200 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
16210 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
16220 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
16230 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
16240 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
16250 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
16260 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
16270 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
16280 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
16290 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
162a0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65   to contain an e
162b0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rror..        //
162c0 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  / message...    
162d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
162e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
162f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16300 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
16310 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
16320 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
16330 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
16340 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
16350 43 6f 64 65 20 43 72 65 61 74 65 28 0d 0a 20 20  Code Create(..  
16360 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
16370 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
16380 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f  ction,  /* in */
16390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
163a0 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
163b0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
163c0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
163d0 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
163e0 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20 20  ents,           
163f0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
16400 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
16410 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
16420 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  le, /* out */.. 
16430 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73             ref s
16440 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
16450 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
16460 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
16470 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
16480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
164d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
164e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
164f0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
16500 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
16510 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16520 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
16530 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
16540 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
16550 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
16560 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16580 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
16590 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on">..        //
165a0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
165b0 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
165c0 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  n" /> object ins
165d0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
165e0 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f   with..        /
165f0 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
16600 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
16610 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16620 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
16630 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74  name="pClientDat
16640 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
16650 20 54 68 65 20 6e 61 74 69 76 65 20 75 73 65 72   The native user
16660 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73  -data pointer as
16670 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
16680 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74  is module, as it
16690 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
166a0 2f 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  / provided to th
166b0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
166c0 62 72 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e  brary when the n
166d0 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73  ative module ins
166e0 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
166f0 2f 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d  // was created..
16700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
16710 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
16720 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
16730 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20  arguments">..   
16740 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64       /// The mod
16750 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61  ule name, databa
16760 73 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c  se name, virtual
16770 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64   table name, and
16780 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20   all other..    
16790 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
167a0 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20  s passed to the 
167b0 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
167c0 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d  ABLE statement..
167d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
167e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
167f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
16800 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
16810 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
16820 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
16830 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
16840 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
16850 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
16860 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
16870 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
16880 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
16890 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
168a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
168b0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
168c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
168d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
168e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
168f0 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  "error">..      
16900 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75    /// Upon failu
16910 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  re, this paramet
16920 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
16930 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61  ied to contain a
16940 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  n error..       
16950 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20   /// message... 
16960 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
16970 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
16980 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
16990 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
169a0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
169b0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
169c0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
169d0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
169e0 72 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28  rorCode Connect(
169f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
16a00 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
16a10 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69  onnection,  /* i
16a20 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
16a30 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74    IntPtr pClient
16a40 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20 20  Data,           
16a50 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
16a60 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
16a70 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20  rguments,       
16a80 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
16a90 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
16aa0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
16ab0 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a   table, /* out *
16ac0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
16ad0 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20  ef string error 
16ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
16af0 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
16b00 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
16b10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b40 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
16b60 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16b70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16b80 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
16b90 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
16ba0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
16bb0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
16bc0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
16bd0 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
16be0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
16bf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16c00 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
16c10 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
16c20 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
16c30 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
16c40 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
16c50 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
16c60 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
16c70 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
16c80 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
16c90 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
16ca0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16cb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16cc0 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
16cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16ce0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
16cf0 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62  LiteIndex" /> ob
16d00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
16d10 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65  ntaining all the
16d20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61  ..        /// da
16d30 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74  ta for the input
16d40 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65  s and outputs re
16d50 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64 65 78 20  lating to index 
16d60 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  selection...    
16d70 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
16d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
16d90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16da0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
16db0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
16dc0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
16dd0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
16de0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
16df0 43 6f 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d  Code BestIndex(.
16e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
16e10 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
16e20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  table, /* in */.
16e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
16e40 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 20 20  iteIndex index  
16e50 20 20 20 20 20 20 20 2f 2a 20 69 6e 2c 20 6f 75         /* in, ou
16e60 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
16e70 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
16e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16ed0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16ee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16ef0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
16f00 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
16f10 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
16f20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
16f30 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
16f40 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20  le.xDisconnect" 
16f50 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
16f60 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16f70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16f80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
16f90 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
16fa0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
16fb0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
16fc0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
16fd0 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
16fe0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
16ff0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
17000 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
17010 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17020 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
17030 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
17040 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
17050 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
17060 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17070 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
17080 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
17090 64 65 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  de Disconnect(..
170a0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
170b0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
170c0 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
170d0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
170e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17110 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
17140 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17150 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
17160 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
17170 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
17180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
17190 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
171a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
171b0 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
171c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
171d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
171e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
171f0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
17200 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17210 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17220 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
17230 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
17240 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
17250 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
17260 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
17270 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17280 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17290 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
172a0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
172b0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
172c0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
172d0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
172e0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
172f0 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79  rrorCode Destroy
17300 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
17310 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
17320 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
17330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
17340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
17350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
173a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
173b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
173c0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
173d0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
173e0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
173f0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
17400 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
17410 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
17420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17430 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17440 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17450 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
17460 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17470 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17480 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
17490 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
174a0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
174b0 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
174c0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
174d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
174e0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
174f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
17500 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
17510 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
17520 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
17530 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
17540 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
17550 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
17560 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
17570 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
17580 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
17590 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
175a0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
175b0 69 74 68 20 74 68 65 20 6e 65 77 6c 79 20 6f 70  ith the newly op
175c0 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
175d0 6c 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  le cursor...    
175e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
175f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
17600 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
17610 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
17620 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
17630 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
17640 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
17650 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
17660 43 6f 64 65 20 4f 70 65 6e 28 0d 0a 20 20 20 20  Code Open(..    
17670 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
17680 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
17690 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
176a0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
176b0 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74    ref SQLiteVirt
176c0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
176d0 75 72 73 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d  ursor /* out */.
176e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
176f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
17700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17740 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
17750 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17760 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
17770 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
17780 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
17790 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
177a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
177b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
177c0 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
177d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
177e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
177f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17800 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
17810 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
17820 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
17830 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
17840 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
17850 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
17860 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
17870 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
17880 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
17890 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
178a0 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
178b0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
178c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
178d0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
178e0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
178f0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
17900 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
17910 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
17920 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
17930 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17940 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
17950 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
17960 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
17970 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  sor /* in */..  
17980 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17990 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
179a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179c0 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
179e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
179f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17a00 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17a10 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
17a20 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
17a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17a40 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
17a50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
17a60 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
17a70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
17a80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17a90 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17aa0 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
17ab0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
17ac0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
17ad0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
17ae0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
17af0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
17b00 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
17b10 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
17b20 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
17b30 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
17b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
17b50 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
17b60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
17b70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17b80 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22  me="indexNumber"
17b90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
17ba0 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
17bb0 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
17bc0 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
17bd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17be0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17bf0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17c00 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20  indexString">.. 
17c10 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e         /// Strin
17c20 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  g used to help i
17c30 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
17c40 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
17c50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17c60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17c70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
17c80 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
17c90 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72  / The values cor
17ca0 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61  responding to ea
17cb0 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65  ch column in the
17cc0 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
17cd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17ce0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17cf0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17d00 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17d10 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17d20 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17d30 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17d40 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
17d50 65 45 72 72 6f 72 43 6f 64 65 20 46 69 6c 74 65  eErrorCode Filte
17d60 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
17d70 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
17d80 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c  leCursor cursor,
17d90 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
17da0 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
17db0 4e 75 6d 62 65 72 2c 20 20 20 20 20 20 20 20 20  Number,         
17dc0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
17dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
17de0 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
17df0 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
17e00 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
17e10 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65       SQLiteValue
17e20 5b 5d 20 76 61 6c 75 65 73 20 20 20 20 20 20 20  [] values       
17e30 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
17e40 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
17e50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
17e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
17eb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17ec0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
17ed0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
17ee0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
17ef0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
17f00 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
17f10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65  NativeModule.xNe
17f20 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  xt" /> method...
17f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
17f40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17f50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17f60 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
17f70 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
17f80 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
17f90 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
17fa0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
17fb0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
17fc0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
17fd0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
17fe0 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
17ff0 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
18000 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
18010 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
18020 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18030 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
18050 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
18060 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
18070 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
18080 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
18090 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4e 65  LiteErrorCode Ne
180a0 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt(..           
180b0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
180c0 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
180d0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
180e0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
180f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18120 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
18140 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
18150 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
18160 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
18170 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
18180 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
18190 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
181a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
181b0 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
181c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
181d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
181e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
181f0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
18200 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
18210 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
18220 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
18230 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
18240 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
18250 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
18260 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
18270 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
18280 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
18290 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
182a0 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
182b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
182c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
182d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
182e0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
182f0 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73   if no more rows
18300 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20   are available; 
18310 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
18320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
18330 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18340 20 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20   bool Eof(..    
18350 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
18360 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
18370 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f   cursor /* in */
18380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
18390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
183f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
18400 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
18410 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
18420 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
18430 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
18440 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
18450 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
18460 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f  Column" /> metho
18470 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18480 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18490 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
184a0 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
184b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
184c0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
184d0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
184e0 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
184f0 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
18500 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
18510 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
18520 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
18530 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
18540 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
18550 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
18560 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
18570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
18580 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22  m name="context"
18590 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
185a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
185b0 4c 69 74 65 43 6f 6e 74 65 78 74 22 20 2f 3e 20  LiteContext" /> 
185c0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
185d0 74 6f 20 62 65 20 75 73 65 64 20 66 6f 72 0d 0a  to be used for..
185e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
185f0 72 6e 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  rning the specif
18600 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  ied column value
18610 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
18620 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
18630 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18640 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
18650 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
18660 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
18670 2f 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64  / The zero-based
18680 20 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e   index correspon
18690 64 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75  ding to the colu
186a0 6d 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  mn containing th
186b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
186c0 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
186d0 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ned...        //
186e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
186f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
18700 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
18710 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
18720 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
18730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
18740 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
18750 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43  QLiteErrorCode C
18760 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
18770 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
18780 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
18790 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  sor, /* in */.. 
187a0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
187b0 65 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74  eContext context
187c0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
187d0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
187e0 20 20 69 6e 74 20 69 6e 64 65 78 20 20 20 20 20    int index     
187f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18800 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
18810 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
18820 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
18870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18880 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18890 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
188a0 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
188b0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
188c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
188d0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
188e0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
188f0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
18900 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
18910 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18920 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
18930 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
18940 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
18950 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
18960 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
18970 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
18980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
18990 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
189a0 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  e previously ope
189b0 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
189c0 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a  e cursor to be..
189d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
189e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
189f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18a00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18a10 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
18a20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
18a30 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
18a40 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
18a50 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
18a60 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20  the unique..    
18a70 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20      /// integer 
18a80 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66  row identifier f
18a90 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
18aa0 6f 77 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  ow for the speci
18ab0 66 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20  fied cursor...  
18ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18ad0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
18ae0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
18af0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
18b00 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
18b10 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
18b20 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
18b30 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
18b40 6f 72 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20  orCode RowId(.. 
18b50 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
18b60 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
18b70 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69  sor cursor, /* i
18b80 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18b90 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
18ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18bb0 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
18bc0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
18bd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c00 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
18c20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18c30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18c40 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
18c50 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
18c60 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
18c70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
18c80 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
18c90 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
18ca0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
18cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
18cc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
18cd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
18ce0 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
18cf0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
18d00 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
18d10 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
18d20 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
18d30 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
18d40 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
18d50 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
18d60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18d70 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
18d80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
18d90 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ues">..        /
18da0 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
18db0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
18dc0 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63  eValue" /> objec
18dd0 74 20 69 6e 73 74 61 6e 63 65 73 20 63 6f 6e 74  t instances cont
18de0 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
18df0 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72 20 6d  /// the new or m
18e00 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76  odified column v
18e10 61 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d 0a  alues, if any...
18e20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18e30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
18e40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72  / <param name="r
18e50 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20  owId">..        
18e60 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
18e70 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
18e80 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
18e90 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
18ea0 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20   unique..       
18eb0 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77   /// integer row
18ec0 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20   identifier for 
18ed0 74 68 65 20 72 6f 77 20 74 68 61 74 20 77 61 73  the row that was
18ee0 20 69 6e 73 65 72 74 65 64 2c 20 69 66 20 61 6e   inserted, if an
18ef0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
18f00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18f10 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
18f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
18f30 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
18f40 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
18f50 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
18f60 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
18f70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 55 70 64  iteErrorCode Upd
18f80 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
18f90 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
18fa0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
18fb0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18fc0 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20    SQLiteValue[] 
18fd0 76 61 6c 75 65 73 2c 20 20 20 20 20 2f 2a 20 69  values,     /* i
18fe0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18ff0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
19000 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f              /* o
19010 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
19020 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
19030 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
19080 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
19090 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
190a0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
190b0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
190c0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
190d0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
190e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
190f0 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
19100 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
19110 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
19120 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
19130 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
19140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19150 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
19160 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
19170 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
19180 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
19190 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
191a0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
191b0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
191c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
191d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
191e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
191f0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
19200 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
19210 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
19220 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
19230 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42  QLiteErrorCode B
19240 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
19250 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
19260 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69  Table table /* i
19270 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
19280 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
19290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
192e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
192f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19300 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
19310 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
19320 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
19330 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
19340 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
19350 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74  le.xSync" /> met
19360 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
19370 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
19380 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19390 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
193a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
193b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
193c0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
193d0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
193e0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
193f0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
19400 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
19410 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
19420 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19430 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
19440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
19450 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
19460 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
19470 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
19480 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
19490 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53 79 6e  iteErrorCode Syn
194a0 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c(..            
194b0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
194c0 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
194d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
194e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19540 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
19550 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
19560 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
19570 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
19580 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19590 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
195a0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
195b0 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
195c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
195d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
195e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
195f0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
19600 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
19610 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
19620 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
19630 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19640 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
19650 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
19660 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
19670 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19680 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19690 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
196a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
196b0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
196c0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
196d0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
196e0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
196f0 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6d 6d  teErrorCode Comm
19700 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
19710 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
19720 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20  ble table /* in 
19730 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
19740 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
197a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
197b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
197c0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
197d0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
197e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
197f0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
19800 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
19810 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
19820 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
19830 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
19840 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
19850 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
19860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19870 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
19880 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
19890 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
198a0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
198b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
198c0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
198d0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
198e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
198f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
19900 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
19910 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
19920 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
19930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
19940 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
19950 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
19960 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
19970 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
19980 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
19990 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
199a0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
199b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
199c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199e0 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
19a00 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
19a10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
19a20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
19a30 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
19a40 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
19a50 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
19a60 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
19a70 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
19a80 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
19a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
19aa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19ab0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
19ac0 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
19ad0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
19ae0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
19af0 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
19b00 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
19b10 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
19b20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
19b30 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
19b40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19b50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19b60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
19b70 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20  gumentCount">.. 
19b80 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
19b90 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
19ba0 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69  ts to the functi
19bb0 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e  on being sought.
19bc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19bd0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
19be0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19bf0 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  "name">..       
19c00 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
19c10 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
19c20 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20  ing sought...   
19c30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
19c40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19c50 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63  param name="func
19c60 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  tion">..        
19c70 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
19c80 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
19c90 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
19ca0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
19cb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19cc0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46  ee cref="SQLiteF
19cd0 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  unction" /> obje
19ce0 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 73 70  ct instance resp
19cf0 6f 6e 73 69 62 6c 65 20 66 6f 72 0d 0a 20 20 20  onsible for..   
19d00 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
19d10 6e 74 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  nting the specif
19d20 69 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  ied function... 
19d30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19d40 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19d50 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
19d60 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
19d70 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
19d80 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
19d90 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
19da0 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
19db0 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
19dc0 2f 2f 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64  // native user-d
19dd0 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f  ata pointer asso
19de0 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
19df0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
19e00 65 66 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  ef name="functio
19e10 6e 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20  n" />...        
19e20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19e30 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
19e40 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
19e50 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
19e60 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74   specified funct
19e70 69 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a  ion was found; z
19e80 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
19e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
19ea0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
19eb0 62 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69 6f  bool FindFunctio
19ec0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
19ed0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
19ee0 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 2f 2a 20  le table,    /* 
19ef0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
19f00 20 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43     int argumentC
19f10 6f 75 6e 74 2c 20 20 20 20 20 20 20 20 20 20 20  ount,           
19f20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
19f30 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
19f40 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e,              
19f50 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
19f60 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
19f70 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63  iteFunction func
19f80 74 69 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d  tion, /* out */.
19f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
19fa0 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
19fb0 61 74 61 20 20 20 20 20 20 20 2f 2a 20 6f 75 74  ata       /* out
19fc0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19fd0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
19fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1a030 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1a040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1a050 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
1a060 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
1a070 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1a080 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
1a090 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1a0a0 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
1a0b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a0c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a0d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a0e0 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1a0f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a100 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1a110 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1a120 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1a130 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1a140 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1a150 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1a160 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1a170 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a180 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a190 6d 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20  me="newName">.. 
1a1a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1a1b0 65 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ew name for the 
1a1c0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1a1d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1a1e0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1a1f0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1a200 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1a210 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1a220 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1a230 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1a240 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1a250 72 72 6f 72 43 6f 64 65 20 52 65 6e 61 6d 65 28  rrorCode Rename(
1a260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1a270 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1a280 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f   table, /* in */
1a290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1a2a0 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 20 20 20  ring newName    
1a2b0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1a2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1a2d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1a330 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1a340 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1a350 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1a360 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1a370 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a380 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1a390 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1a3a0 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
1a3b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a3c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a3d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a3e0 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1a3f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a400 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1a410 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1a420 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1a430 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1a440 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1a450 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1a460 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1a470 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a480 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a490 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d  me="savepoint">.
1a4a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1a4b0 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20  s is an integer 
1a4c0 69 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65 72  identifier under
1a4d0 20 77 68 69 63 68 20 74 68 65 20 74 68 65 20 63   which the the c
1a4e0 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 0d  urrent state of.
1a4f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
1a500 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73   virtual table s
1a510 68 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e 0d  hould be saved..
1a520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a530 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1a540 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1a550 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1a560 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1a570 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1a580 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1a590 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1a5a0 45 72 72 6f 72 43 6f 64 65 20 53 61 76 65 70 6f  ErrorCode Savepo
1a5b0 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
1a5c0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1a5d0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
1a5e0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1a5f0 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
1a600 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
1a610 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1a620 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1a680 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1a690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1a6a0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1a6b0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1a6c0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1a6d0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1a6e0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1a6f0 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20  le.xRelease" /> 
1a700 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1a710 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1a720 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1a730 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
1a740 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1a750 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1a760 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1a770 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1a780 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
1a790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
1a7a0 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
1a7b0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1a7c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1a7d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1a7e0 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22  name="savepoint"
1a7f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1a800 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65  his is an intege
1a810 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61  r used to indica
1a820 74 65 20 74 68 61 74 20 61 6e 79 20 73 61 76 65  te that any save
1a830 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e  d states with an
1a840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64  ..        /// id
1a850 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72  entifier greater
1a860 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
1a870 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65  o this should be
1a880 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 0d   deleted by the.
1a890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1a8a0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1a8b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1a8c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a8d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1a8e0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1a8f0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1a900 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1a910 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1a920 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1a930 72 43 6f 64 65 20 52 65 6c 65 61 73 65 28 0d 0a  rCode Release(..
1a940 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1a950 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1a960 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
1a970 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1a980 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20  savepoint       
1a990 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
1a9a0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1a9b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1aa10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1aa20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1aa30 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1aa40 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1aa50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1aa60 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1aa70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
1aa80 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
1aa90 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1aaa0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1aab0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1aac0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1aad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1aae0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1aaf0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1ab00 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1ab10 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1ab20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1ab30 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1ab40 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1ab50 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ab60 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ab70 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  e="savepoint">..
1ab80 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1ab90 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69   is an integer i
1aba0 64 65 6e 74 69 66 69 65 72 20 75 73 65 64 20 74  dentifier used t
1abb0 6f 20 73 70 65 63 69 66 79 20 61 20 73 70 65 63  o specify a spec
1abc0 69 66 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20  ific saved..    
1abd0 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f      /// state fo
1abe0 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1abf0 62 6c 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65  ble for it to re
1ac00 73 74 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63  store itself bac
1ac10 6b 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20  k to, which..   
1ac20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20       /// should 
1ac30 61 6c 73 6f 20 68 61 76 65 20 74 68 65 20 65 66  also have the ef
1ac40 66 65 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67  fect of deleting
1ac50 20 61 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65   all saved state
1ac60 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  s with an..     
1ac70 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69     /// integer i
1ac80 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65  dentifier greate
1ac90 72 20 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e  r than this one.
1aca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1acb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1acc0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1acd0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1ace0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1acf0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1ad00 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1ad10 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1ad20 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62  eErrorCode Rollb
1ad30 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
1ad40 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1ad50 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
1ad60 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1ad70 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e      int savepoin
1ad80 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  t             /*
1ad90 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1ada0 20 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20      );..    }.. 
1adb0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1adc0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adf0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1ae20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 20 53 74 61  SQLiteMemory Sta
1ae30 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  tic Class..    /
1ae40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1ae50 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
1ae60 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63   contains static
1ae70 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72   methods that ar
1ae80 65 20 75 73 65 64 20 74 6f 20 61 6c 6c 6f 63 61  e used to alloca
1ae90 74 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e  te,..    /// man
1aea0 69 70 75 6c 61 74 65 2c 20 61 6e 64 20 66 72 65  ipulate, and fre
1aeb0 65 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  e native memory 
1aec0 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
1aed0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1aee0 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
1aef0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
1af00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
1af10 61 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  ass SQLiteMemory
1af20 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1af30 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
1af40 20 44 61 74 61 0d 0a 23 69 66 20 54 52 41 43 4b   Data..#if TRACK
1af50 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20  _MEMORY_BYTES.. 
1af60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1af70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1af80 2f 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  / This object in
1af90 73 74 61 6e 63 65 20 69 73 20 75 73 65 64 20 74  stance is used t
1afa0 6f 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63  o synchronize ac
1afb0 63 65 73 73 20 74 6f 20 74 68 65 20 6f 74 68 65  cess to the othe
1afc0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  r..        /// s
1afd0 74 61 74 69 63 20 66 69 65 6c 64 73 20 6f 66 20  tatic fields of 
1afe0 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
1aff0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b000 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
1b010 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
1b020 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
1b030 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
1b040 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1b050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b070 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
1b090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1b0a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1b0b0 20 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20 6e   /// The total n
1b0c0 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e  umber of outstan
1b0d0 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65  ding memory byte
1b0e0 73 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74  s allocated by t
1b0f0 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
1b100 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
1b110 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1b120 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
1b130 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b140 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
1b150 74 61 74 69 63 20 69 6e 74 20 62 79 74 65 73 41  tatic int bytesA
1b160 6c 6c 6f 63 61 74 65 64 3b 0d 0a 0d 0a 20 20 20  llocated;....   
1b170 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
1b1c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1b1d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1b1e0 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e  // The maximum n
1b1f0 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e  umber of outstan
1b200 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65  ding memory byte
1b210 73 20 65 76 65 72 20 61 6c 6c 6f 63 61 74 65 64  s ever allocated
1b220 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   by..        ///
1b230 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
1b240 67 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  g the SQLite cor
1b250 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1b260 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1b270 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
1b280 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 6d  ate static int m
1b290 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63  aximumBytesAlloc
1b2a0 61 74 65 64 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ated;..#endif.. 
1b2b0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
1b2c0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
1b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b320 23 72 65 67 69 6f 6e 20 4d 65 6d 6f 72 79 20 41  #region Memory A
1b330 6c 6c 6f 63 61 74 69 6f 6e 20 48 65 6c 70 65 72  llocation Helper
1b340 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
1b350 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
1b370 6f 63 61 74 65 73 20 61 74 20 6c 65 61 73 74 20  ocates at least 
1b380 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 75  the specified nu
1b390 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66  mber of bytes of
1b3a0 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 0d 0a   native memory..
1b3b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 61 20          /// via 
1b3c0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
1b3d0 6c 69 62 72 61 72 79 20 73 71 6c 69 74 65 33 5f  library sqlite3_
1b3e0 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f  malloc() functio
1b3f0 6e 20 61 6e 64 20 72 65 74 75 72 6e 73 0d 0a 20  n and returns.. 
1b400 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72         /// the r
1b410 65 73 75 6c 74 69 6e 67 20 6e 61 74 69 76 65 20  esulting native 
1b420 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
1b430 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1b440 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1b450 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22  aram name="size"
1b460 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b470 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
1b480 65 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d  es to allocate..
1b490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b4a0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1b4b0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1b4c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1b4d0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61  tive pointer tha
1b4e0 74 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c  t points to a bl
1b4f0 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66  ock of memory of
1b500 20 61 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20   at least the.. 
1b510 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69         /// speci
1b520 66 69 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c  fied size -OR- <
1b530 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
1b540 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65  .Zero" /> if the
1b550 20 6d 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20   memory could.. 
1b560 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62         /// not b
1b570 65 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20  e allocated...  
1b580 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1b590 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1b5a0 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
1b5b0 74 72 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20  tr Allocate(int 
1b5c0 73 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  size)..        {
1b5d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1b5e0 74 50 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55  tPtr pMemory = U
1b5f0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1b600 64 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  ds.sqlite3_mallo
1b610 63 28 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20  c(size);....#if 
1b620 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54  TRACK_MEMORY_BYT
1b630 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ES..            
1b640 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49  if (pMemory != I
1b650 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1b660 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b670 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1b680 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65  blockSize = Size
1b690 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20  (pMemory);....  
1b6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1b6b0 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29   (blockSize > 0)
1b6c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b6d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b6e0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1b6f0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1b700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b720 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41 6c           bytesAl
1b730 6c 6f 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b  located += block
1b740 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Size;....       
1b750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b760 20 69 66 20 28 62 79 74 65 73 41 6c 6c 6f 63 61   if (bytesAlloca
1b770 74 65 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74  ted > maximumByt
1b780 65 73 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20  esAllocated)..  
1b790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7a0 20 20 20 20 20 20 20 20 20 20 6d 61 78 69 6d 75            maximu
1b7b0 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20  mBytesAllocated 
1b7c0 3d 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  = bytesAllocated
1b7d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1b7e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1b7f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1b800 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1b810 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
1b820 20 20 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79    return pMemory
1b830 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1b840 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b870 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
1b890 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b8a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1b8b0 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
1b8c0 65 74 75 72 6e 73 20 74 68 65 20 61 63 74 75 61  eturns the actua
1b8d0 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70  l size of the sp
1b8e0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62  ecified memory b
1b8f0 6c 6f 63 6b 20 74 68 61 74 0d 0a 20 20 20 20 20  lock that..     
1b900 20 20 20 2f 2f 2f 20 77 61 73 20 70 72 65 76 69     /// was previ
1b910 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  ously obtained f
1b920 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65  rom the <see cre
1b930 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20  f="Allocate" /> 
1b940 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1b950 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1b960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b970 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72  ram name="pMemor
1b980 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
1b990 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1b9a0 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72  ter to the memor
1b9b0 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73  y block previous
1b9c0 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
1b9d0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1b9e0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c  / <see cref="All
1b9f0 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ocate" /> method
1ba00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1ba20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1ba30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ba40 61 63 74 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20  actual size, in 
1ba50 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6d 65  bytes, of the me
1ba60 6d 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65 63 69  mory block speci
1ba70 66 69 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20  fied via the..  
1ba80 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
1ba90 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
1baa0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1bab0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1bac0 63 20 73 74 61 74 69 63 20 69 6e 74 20 53 69 7a  c static int Siz
1bad0 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79  e(IntPtr pMemory
1bae0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1baf0 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
1bb00 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
1bb10 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
1bb20 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1bb30 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69  e3_malloc_size_i
1bb40 6e 74 65 72 6f 70 28 70 4d 65 6d 6f 72 79 29 3b  nterop(pMemory);
1bb50 0d 0a 23 65 6c 69 66 20 54 52 41 43 4b 5f 4d 45  ..#elif TRACK_ME
1bb60 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20  MORY_BYTES..    
1bb70 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1bb80 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
1bb90 20 4f 6b 2c 20 77 65 20 63 61 6e 6e 6f 74 20 64   Ok, we cannot d
1bba0 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a  etermine the siz
1bbb0 65 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79 20  e of the memory 
1bbc0 62 6c 6f 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  block;..        
1bbd0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
1bbe0 72 65 66 6f 72 65 2c 20 6a 75 73 74 20 74 72 61  refore, just tra
1bbf0 63 6b 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c  ck number of all
1bc00 6f 63 61 74 69 6f 6e 73 20 69 6e 73 74 65 61 64  ocations instead
1bc10 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
1bc20 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1bc30 65 74 75 72 6e 20 28 70 4d 65 6d 6f 72 79 20 21  eturn (pMemory !
1bc40 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f  = IntPtr.Zero) ?
1bc50 20 31 20 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a   1 : 0;..#else..
1bc60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bc70 72 6e 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  rn 0;..#endif.. 
1bc80 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1bc90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1bca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcc0 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
1bce0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1bcf0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1bd00 2f 20 46 72 65 65 73 20 61 20 6d 65 6d 6f 72 79  / Frees a memory
1bd10 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c   block previousl
1bd20 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1bd30 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1bd40 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
1bd50 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  cate" /> method.
1bd60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1bd70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bd80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1bd90 65 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20  e="pMemory">..  
1bda0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1bdb0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1bdc0 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  the memory block
1bdd0 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
1bde0 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  ined from the.. 
1bdf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1be00 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20  cref="Allocate" 
1be10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1be20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1be30 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1be40 20 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 65   static void Fre
1be50 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79  e(IntPtr pMemory
1be60 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1be70 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42  f TRACK_MEMORY_B
1be80 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20  YTES..          
1be90 20 20 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d    if (pMemory !=
1bea0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1beb0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
1bed0 74 20 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69  t blockSize = Si
1bee0 7a 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a  ze(pMemory);....
1bef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf00 69 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20  if (blockSize > 
1bf10 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
1bf20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1bf30 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1bf40 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
1bf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1bf70 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 73             bytes
1bf80 41 6c 6c 6f 63 61 74 65 64 20 2d 3d 20 62 6c 6f  Allocated -= blo
1bf90 63 6b 53 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20  ckSize;..       
1bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1bfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfc0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1bfd0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1bfe0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
1bff0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
1c000 74 65 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79  te3_free(pMemory
1c010 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
1c020 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
1c030 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
1c040 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1c050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1c0a0 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
1c0b0 65 53 74 72 69 6e 67 20 53 74 61 74 69 63 20 43  eString Static C
1c0c0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
1c0d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1c0e0 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74   This class cont
1c0f0 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68  ains static meth
1c100 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ods that are use
1c110 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 6e  d to deal with n
1c120 61 74 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55  ative..    /// U
1c130 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
1c140 74 65 72 73 20 74 6f 20 62 65 20 75 73 65 64 20  ters to be used 
1c150 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  with the SQLite 
1c160 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
1c170 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1c180 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
1c190 73 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c  static class SQL
1c1a0 69 74 65 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b  iteString..    {
1c1b0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1c1c0 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
1c1d0 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
1c1e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1c1f0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
1c200 74 68 65 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73  the maximum poss
1c210 69 62 6c 65 20 6c 65 6e 67 74 68 20 66 6f 72 20  ible length for 
1c220 74 68 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38  the native UTF-8
1c230 20 65 6e 63 6f 64 65 64 0d 0a 20 20 20 20 20 20   encoded..      
1c240 20 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 75 73    /// strings us
1c250 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69  ed with the SQLi
1c260 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
1c270 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c280 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1c290 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1c2a0 20 69 6e 74 20 54 68 69 72 74 79 42 69 74 73 20   int ThirtyBits 
1c2b0 3d 20 30 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d  = 0x3fffffff;...
1c2c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1c2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2f0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1c320 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1c330 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
1c340 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 45 6e  he <see cref="En
1c350 63 6f 64 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63  coding" /> objec
1c360 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20  t instance used 
1c370 74 6f 20 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20  to handle..     
1c380 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f     /// conversio
1c390 6e 73 20 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38  ns from/to UTF-8
1c3a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c3b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c3c0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1c3d0 63 20 72 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64  c readonly Encod
1c3e0 69 6e 67 20 55 74 66 38 45 6e 63 6f 64 69 6e 67  ing Utf8Encoding
1c3f0 20 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38   = Encoding.UTF8
1c400 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
1c410 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1c420 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
1c470 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d      #region UTF-
1c480 38 20 45 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65  8 Encoding Helpe
1c490 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
1c4a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1c4b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1c4c0 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
1c4d0 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72  fied managed str
1c4e0 69 6e 67 20 69 6e 74 6f 20 74 68 65 20 55 54 46  ing into the UTF
1c4f0 2d 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d  -8 encoding and.
1c500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  .        /// ret
1c510 75 72 6e 73 20 74 68 65 20 61 72 72 61 79 20 6f  urns the array o
1c520 66 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69  f bytes containi
1c530 6e 67 20 69 74 73 20 72 65 70 72 65 73 65 6e 74  ng its represent
1c540 61 74 69 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20  ation in that.. 
1c550 20 20 20 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64         /// encod
1c560 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ing...        //
1c570 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1c580 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1c590 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
1c5a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1c5b0 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74  managed string t
1c5c0 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
1c5d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1c5e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1c5f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1c600 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
1c610 66 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69  f bytes containi
1c620 6e 67 20 74 68 65 20 72 65 70 72 65 73 65 6e 74  ng the represent
1c630 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e  ation of the man
1c640 61 67 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  aged..        //
1c650 2f 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  / string in the 
1c660 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f  UTF-8 encoding o
1c670 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
1c680 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1c690 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1c6a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1c6b0 74 69 63 20 62 79 74 65 5b 5d 20 47 65 74 55 74  tic byte[] GetUt
1c6c0 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
1c6d0 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
1c6e0 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
1c6f0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1c700 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c710 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
1c720 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1c730 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1c740 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1c750 20 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 45      return Utf8E
1c760 6e 63 6f 64 69 6e 67 2e 47 65 74 42 79 74 65 73  ncoding.GetBytes
1c770 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
1c780 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1c790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c7e0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c7f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1c800 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
1c810 69 65 64 20 61 72 72 61 79 20 6f 66 20 62 79 74  ied array of byt
1c820 65 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  es representing 
1c830 61 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 0d  a string in the.
1c840 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46  .        /// UTF
1c850 2d 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20  -8 encoding and 
1c860 72 65 74 75 72 6e 73 20 61 20 6d 61 6e 61 67 65  returns a manage
1c870 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
1c880 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1c890 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c8a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65  param name="byte
1c8b0 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
1c8c0 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 62 79   The array of by
1c8d0 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  tes to convert..
1c8e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1c8f0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1c900 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1c910 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1c920 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20  naged string or 
1c930 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
1c940 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1c950 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1c960 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1c970 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72 69  c string GetStri
1c980 6e 67 46 72 6f 6d 55 74 66 38 42 79 74 65 73 28  ngFromUtf8Bytes(
1c990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
1c9a0 74 65 5b 5d 20 62 79 74 65 73 0d 0a 20 20 20 20  te[] bytes..    
1c9b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1c9c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c9d0 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
1c9e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1c9f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1ca00 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  l;....#if !PLATF
1ca10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ca20 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1ca30 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63    return Utf8Enc
1ca40 6f 64 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28  oding.GetString(
1ca50 62 79 74 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a  bytes);..#else..
1ca60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ca70 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e  rn Utf8Encoding.
1ca80 47 65 74 53 74 72 69 6e 67 28 62 79 74 65 73 2c  GetString(bytes,
1ca90 20 30 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68   0, bytes.Length
1caa0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
1cab0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
1cac0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1cad0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1cae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb00 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
1cb20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
1cb30 55 54 46 2d 38 20 53 74 72 69 6e 67 20 48 65 6c  UTF-8 String Hel
1cb40 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
1cb50 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1cb60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1cb70 50 72 6f 62 65 73 20 61 20 6e 61 74 69 76 65 20  Probes a native 
1cb80 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72  pointer to a str
1cb90 69 6e 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38  ing in the UTF-8
1cba0 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20 69 74   encoding for it
1cbb0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  s..        /// t
1cbc0 65 72 6d 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63  erminating NUL c
1cbd0 68 61 72 61 63 74 65 72 2c 20 77 69 74 68 69 6e  haracter, within
1cbe0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c   the specified l
1cbf0 65 6e 67 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20  ength limit...  
1cc00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1cc10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1cc20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1cc30 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
1cc40 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1cc50 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73  NUL-terminated s
1cc60 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a  tring pointer...
1cc70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1cc80 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1cc90 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
1cca0 69 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  imit">..        
1ccb0 2f 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  /// The maximum 
1ccc0 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61  length of the na
1ccd0 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20  tive string, in 
1cce0 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  bytes...        
1ccf0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1cd00 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1cd10 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1cd20 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74   The length of t
1cd30 68 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67  he native string
1cd40 2c 20 69 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20  , in bytes -OR- 
1cd50 7a 65 72 6f 20 69 66 20 74 68 65 20 6c 65 6e 67  zero if the leng
1cd60 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
1cd70 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 64 65 74  could not be det
1cd80 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
1cd90 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1cda0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1cdb0 20 73 74 61 74 69 63 20 69 6e 74 20 50 72 6f 62   static int Prob
1cdc0 65 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67  eForUtf8ByteLeng
1cdd0 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
1cde0 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d   IntPtr pValue,.
1cdf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1ce00 20 6c 69 6d 69 74 0d 0a 20 20 20 20 20 20 20 20   limit..        
1ce10 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
1ce20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
1ce30 74 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d  t length = 0;...
1ce40 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1ce50 28 28 70 56 61 6c 75 65 20 21 3d 20 49 6e 74 50  ((pValue != IntP
1ce60 74 72 2e 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d  tr.Zero) && (lim
1ce70 69 74 20 3e 20 30 29 29 0d 0a 20 20 20 20 20 20  it > 0))..      
1ce80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ce90 20 20 20 20 20 20 20 20 20 64 6f 0d 0a 20 20 20           do..   
1cea0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1ceb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cec0 20 20 20 20 69 66 20 28 4d 61 72 73 68 61 6c 2e      if (Marshal.
1ced0 52 65 61 64 42 79 74 65 28 70 56 61 6c 75 65 2c  ReadByte(pValue,
1cee0 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a   length) == 0)..
1cef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf00 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
1cf10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cf20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68        if (length
1cf30 20 3e 3d 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20   >= limit)..    
1cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf50 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20      break;....  
1cf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf70 20 20 6c 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20    length++;..   
1cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 77               } w
1cf90 68 69 6c 65 20 28 74 72 75 65 29 3b 0d 0a 20 20  hile (true);..  
1cfa0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
1cfb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1cfc0 6e 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  n length;..     
1cfd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1d030 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1d040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1d050 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
1d060 66 69 65 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d  fied native NUL-
1d070 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
1d080 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d   string pointer.
1d090 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
1d0a0 6f 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69  o a managed stri
1d0b0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng...        ///
1d0c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1d0d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1d0e0 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a  name="pValue">..
1d0f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1d100 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1d110 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
1d120 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20  ng pointer...   
1d130 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1d140 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d150 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1d160 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
1d170 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c  d string or null
1d180 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1d190 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1d1a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1d1b0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1d1c0 72 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55  ring StringFromU
1d1d0 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  tf8IntPtr(..    
1d1e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1d1f0 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  Value..         
1d200 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1d210 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1d220 75 72 6e 20 53 74 72 69 6e 67 46 72 6f 6d 55 74  urn StringFromUt
1d230 66 38 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c  f8IntPtr(pValue,
1d240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d250 20 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79    ProbeForUtf8By
1d260 74 65 4c 65 6e 67 74 68 28 70 56 61 6c 75 65 2c  teLength(pValue,
1d270 20 54 68 69 72 74 79 42 69 74 73 29 29 3b 0d 0a   ThirtyBits));..
1d280 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1d290 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2c0 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
1d2e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1d2f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d300 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
1d310 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
1d320 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1d330 69 6e 74 65 72 20 6f 66 20 74 68 65 20 73 70 65  inter of the spe
1d340 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  cified..        
1d350 2f 2f 2f 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20  /// length into 
1d360 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  a managed string
1d370 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d380 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1d390 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1d3a0 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20  me="pValue">..  
1d3b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1d3c0 74 69 76 65 20 55 54 46 2d 38 20 73 74 72 69 6e  tive UTF-8 strin
1d3d0 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20  g pointer...    
1d3e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1d3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1d400 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74  aram name="lengt
1d410 68 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  h">..        ///
1d420 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74   The length of t
1d430 68 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67  he native string
1d440 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20  , in bytes...   
1d450 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1d460 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d470 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1d480 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
1d490 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c  d string or null
1d4a0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1d4b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1d4c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1d4d0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1d4e0 72 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55  ring StringFromU
1d4f0 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  tf8IntPtr(..    
1d500 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1d510 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  Value,..        
1d520 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a      int length..
1d530 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1d540 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d550 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65        if (pValue
1d560 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1d570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d580 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
1d590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1d5a0 20 28 6c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20   (length > 0).. 
1d5b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79                by
1d5d0 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65 77  te[] bytes = new
1d5e0 20 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a   byte[length];..
1d5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d600 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70    Marshal.Copy(p
1d610 56 61 6c 75 65 2c 20 62 79 74 65 73 2c 20 30 2c  Value, bytes, 0,
1d620 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20   length);....   
1d630 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1d640 75 72 6e 20 47 65 74 53 74 72 69 6e 67 46 72 6f  urn GetStringFro
1d650 6d 55 74 66 38 42 79 74 65 73 28 62 79 74 65 73  mUtf8Bytes(bytes
1d660 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1d670 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1d680 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45   return String.E
1d690 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d  mpty;..        }
1d6a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1d6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1d700 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1d710 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
1d720 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
1d730 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
1d740 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55  into a native NU
1d750 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20  L-terminated..  
1d760 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20        /// UTF-8 
1d770 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75  string pointer u
1d780 73 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61  sing memory obta
1d790 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51  ined from the SQ
1d7a0 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20  Lite core..     
1d7b0 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d     /// library..
1d7c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1d7d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d7e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1d7f0 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
1d800 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
1d810 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  ed string to con
1d820 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
1d830 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1d840 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1d850 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1d860 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  The native NUL-t
1d870 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
1d880 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f  string pointer o
1d890 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  r..        /// <
1d8a0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
1d8b0 2e 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66  .Zero" /> upon f
1d8c0 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1d8d0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1d8e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1d8f0 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 55 74  static IntPtr Ut
1d900 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
1d910 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng(..           
1d920 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20   string value.. 
1d930 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1d940 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d950 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1d960 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1d970 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1d980 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
1d990 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1d9a0 74 72 20 72 65 73 75 6c 74 20 3d 20 49 6e 74 50  tr result = IntP
1d9b0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
1d9c0 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
1d9d0 65 73 20 3d 20 47 65 74 55 74 66 38 42 79 74 65  es = GetUtf8Byte
1d9e0 73 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75  sFromString(valu
1d9f0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1da00 20 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20     if (bytes == 
1da10 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1da20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1da30 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
1da40 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
1da50 6e 67 74 68 20 3d 20 62 79 74 65 73 2e 4c 65 6e  ngth = bytes.Len
1da60 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gth;....        
1da70 20 20 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c      result = SQL
1da80 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
1da90 74 65 28 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d  te(length + 1);.
1daa0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
1dab0 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74  f (result == Int
1dac0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1dad0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1dae0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
1daf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
1db00 72 73 68 61 6c 2e 43 6f 70 79 28 62 79 74 65 73  rshal.Copy(bytes
1db10 2c 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e  , 0, result, len
1db20 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  gth);..         
1db30 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
1db40 42 79 74 65 28 72 65 73 75 6c 74 2c 20 6c 65 6e  Byte(result, len
1db50 67 74 68 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20  gth, 0);....    
1db60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
1db70 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
1db80 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1db90 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1dba0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1dbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
1dbf0 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d      #region UTF-
1dc00 38 20 53 74 72 69 6e 67 20 41 72 72 61 79 20 48  8 String Array H
1dc10 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
1dc20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1dc30 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1dc40 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67  / Converts a log
1dc50 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
1dc60 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
1dc70 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
1dc80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f  ..        /// po
1dc90 69 6e 74 65 72 73 20 69 6e 74 6f 20 61 6e 20 61  inters into an a
1dca0 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20  rray of managed 
1dcb0 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  strings...      
1dcc0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1dcd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1dce0 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
1dcf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1dd00 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65  he number of ele
1dd10 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67  ments in the log
1dd20 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
1dd30 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
1dd40 2f 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  / NUL-terminated
1dd50 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1dd60 69 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20  inters...       
1dd70 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1dd80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1dd90 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
1dda0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ddb0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1ddc0 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  o the logical ar
1ddd0 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55  ray of native NU
1dde0 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20  L-terminated..  
1ddf0 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20        /// UTF-8 
1de00 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20  string pointers 
1de10 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
1de20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1de30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1de40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1de50 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
1de60 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  of managed strin
1de70 67 73 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  gs or null upon 
1de80 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1de90 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1dea0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1deb0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d   static string[]
1dec0 20 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d   StringArrayFrom
1ded0 55 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74  Utf8SizeAndIntPt
1dee0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
1def0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
1df00 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
1df10 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gv..            
1df20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1df30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72            if (ar
1df40 67 63 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20  gc < 0)..       
1df50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1df60 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
1df70 20 20 20 20 20 69 66 20 28 61 72 67 76 20 3d 3d       if (argv ==
1df80 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1df90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1dfa0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1dfb0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1dfc0 67 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  g[] result = new
1dfd0 20 73 74 72 69 6e 67 5b 61 72 67 63 5d 3b 0d 0a   string[argc];..
1dfe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
1dff0 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30  r (int index = 0
1e000 2c 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20  , offset = 0;.. 
1e010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e020 20 20 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c     index < resul
1e030 74 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  t.Length;..     
1e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1e050 6e 64 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b  ndex++, offset +
1e060 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a  = IntPtr.Size)..
1e070 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1e090 6e 74 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c  ntPtr pArg = SQL
1e0a0 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
1e0b0 6e 74 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73  ntPtr(argv, offs
1e0c0 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
1e0d0 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69          result[i
1e0e0 6e 64 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d  ndex] = (pArg !=
1e0f0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d   IntPtr.Zero) ?.
1e100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e110 20 20 20 20 20 53 74 72 69 6e 67 46 72 6f 6d 55       StringFromU
1e120 74 66 38 49 6e 74 50 74 72 28 70 41 72 67 29 20  tf8IntPtr(pArg) 
1e130 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
1e140 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1e150 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
1e160 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
1e170 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1e1d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e1e0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1e1f0 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61  s an array of ma
1e200 6e 61 67 65 64 20 73 74 72 69 6e 67 73 20 69 6e  naged strings in
1e210 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6e  to an array of n
1e220 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
1e230 2f 2f 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  // NUL-terminate
1e240 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  d UTF-8 string p
1e250 6f 69 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20  ointers...      
1e260 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1e270 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1e280 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
1e290 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
1e2a0 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61   The array of ma
1e2b0 6e 61 67 65 64 20 73 74 72 69 6e 67 73 20 74 6f  naged strings to
1e2c0 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
1e2d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e2e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1e2f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e300 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
1e310 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
1e320 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
1e330 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 6f 72 20  ing pointers or 
1e340 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  null..        //
1e350 2f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  / upon failure..
1e360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1e370 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1e380 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49   public static I
1e390 6e 74 50 74 72 5b 5d 20 55 74 66 38 49 6e 74 50  ntPtr[] Utf8IntP
1e3a0 74 72 41 72 72 61 79 46 72 6f 6d 53 74 72 69 6e  trArrayFromStrin
1e3b0 67 41 72 72 61 79 28 0d 0a 20 20 20 20 20 20 20  gArray(..       
1e3c0 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 76 61       string[] va
1e3d0 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lues..          
1e3e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1e3f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1e400 76 61 6c 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  values == null).
1e410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e420 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1e430 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1e440 50 74 72 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e  Ptr[] result = n
1e450 65 77 20 49 6e 74 50 74 72 5b 76 61 6c 75 65 73  ew IntPtr[values
1e460 2e 4c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20  .Length];....   
1e470 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
1e480 74 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64  t index = 0; ind
1e490 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67  ex < result.Leng
1e4a0 74 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20  th; index++)..  
1e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1e4c0 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74  sult[index] = Ut
1e4d0 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
1e4e0 6e 67 28 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d  ng(values[index]
1e4f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1e500 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
1e510 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1e520 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1e530 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1e540 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20  /////////....   
1e5a0 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
1e5b0 79 74 65 73 20 53 74 61 74 69 63 20 43 6c 61 73  ytes Static Clas
1e5c0 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
1e5d0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
1e5e0 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e  is class contain
1e5f0 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73  s static methods
1e600 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74   that are used t
1e610 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69  o deal with nati
1e620 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 70 6f 69 6e  ve..    /// poin
1e630 74 65 72 73 20 74 6f 20 6d 65 6d 6f 72 79 20 62  ters to memory b
1e640 6c 6f 63 6b 73 20 74 68 61 74 20 6c 6f 67 69 63  locks that logic
1e650 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 20 61 72 72  ally contain arr
1e660 61 79 73 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ays of bytes to 
1e670 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64  be..    /// used
1e680 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
1e690 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
1e6a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1e6b0 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
1e6c0 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 53 51   static class SQ
1e6d0 4c 69 74 65 42 79 74 65 73 0d 0a 20 20 20 20 7b  LiteBytes..    {
1e6e0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1e6f0 6e 20 42 79 74 65 20 41 72 72 61 79 20 48 65 6c  n Byte Array Hel
1e700 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
1e710 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1e720 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1e730 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76  Converts a nativ
1e740 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
1e750 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
1e760 62 79 74 65 73 20 6f 66 20 74 68 65 0d 0a 20 20  bytes of the..  
1e770 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
1e780 69 65 64 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20  ied length into 
1e790 61 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61  a managed byte a
1e7a0 72 72 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rray...        /
1e7b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e7c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e7d0 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
1e7e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1e7f0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1e800 20 74 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20   to the logical 
1e810 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 74  array of bytes t
1e820 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
1e830 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1e840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1e850 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74  aram name="lengt
1e860 68 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  h">..        ///
1e870 20 54 68 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20   The length, in 
1e880 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6c 6f  bytes, of the lo
1e890 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62  gical array of b
1e8a0 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ytes to convert.
1e8b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1e8c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1e8d0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1e8e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1e8f0 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
1e900 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  y or null upon f
1e910 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1e920 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1e930 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1e940 73 74 61 74 69 63 20 62 79 74 65 5b 5d 20 46 72  static byte[] Fr
1e950 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  omIntPtr(..     
1e960 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1e970 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
1e980 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20     int length.. 
1e990 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1e9a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e9b0 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
1e9c0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1e9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e9e0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1e9f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1ea00 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20  (length == 0).. 
1ea10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1ea20 65 74 75 72 6e 20 6e 65 77 20 62 79 74 65 5b 30  eturn new byte[0
1ea30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
1ea40 20 20 62 79 74 65 5b 5d 20 72 65 73 75 6c 74 20    byte[] result 
1ea50 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67 74  = new byte[lengt
1ea60 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h];....         
1ea70 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28     Marshal.Copy(
1ea80 70 56 61 6c 75 65 2c 20 72 65 73 75 6c 74 2c 20  pValue, result, 
1ea90 30 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20  0, length);.... 
1eaa0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1eab0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
1eac0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ead0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1eb20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1eb30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1eb40 6e 76 65 72 74 73 20 61 20 6d 61 6e 61 67 65 64  nverts a managed
1eb50 20 62 79 74 65 20 61 72 72 61 79 20 69 6e 74 6f   byte array into
1eb60 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
1eb70 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d 0a  r to a logical..
1eb80 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61          /// arra
1eb90 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20  y of bytes...   
1eba0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1ebb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1ebc0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1ebd0 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1ebe0 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62  // The managed b
1ebf0 79 74 65 20 61 72 72 61 79 20 74 6f 20 63 6f 6e  yte array to con
1ec00 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
1ec10 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ec20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1ec30 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1ec40 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1ec50 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20  er to a logical 
1ec60 62 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75  byte array or nu
1ec70 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
1ec80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ec90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1eca0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1ecb0 49 6e 74 50 74 72 20 54 6f 49 6e 74 50 74 72 28  IntPtr ToIntPtr(
1ecc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
1ecd0 74 65 5b 5d 20 76 61 6c 75 65 0d 0a 20 20 20 20  te[] value..    
1ece0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1ecf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ed00 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1ed10 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1ed20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
1ed30 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
1ed40 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
1ed50 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67  gth = value.Leng
1ed60 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  th;....         
1ed70 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d     if (length ==
1ed80 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
1ed90 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
1eda0 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
1edb0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72          IntPtr r
1edc0 65 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65  esult = SQLiteMe
1edd0 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65  mory.Allocate(le
1ede0 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth);....      
1edf0 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
1ee00 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1ee10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ee20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1ee30 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
1ee40 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70       Marshal.Cop
1ee50 79 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75  y(value, 0, resu
1ee60 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a  lt, length);....
1ee70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ee80 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
1ee90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
1eea0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
1eeb0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1eec0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1eed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eef0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
1ef20 6f 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  on SQLiteMarshal
1ef30 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
1ef40 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ef50 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
1ef60 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74  lass contains st
1ef70 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61  atic methods tha
1ef80 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 70 65  t are used to pe
1ef90 72 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20  rform several.. 
1efa0 20 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c     /// low-level
1efb0 20 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e   data marshallin
1efc0 67 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20  g tasks between 
1efd0 6e 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67  native and manag
1efe0 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
1eff0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1f000 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f010 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61  c class SQLiteMa
1f020 72 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20  rshal..    {..  
1f030 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
1f040 74 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68  tPtr Helper Meth
1f050 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
1f060 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f070 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
1f080 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  a new <see cref=
1f090 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
1f0a0 63 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65  ct instance base
1f0b0 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  d on the..      
1f0c0 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
1f0d0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
1f0e0 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
1f0f0 74 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74  tance and an int
1f100 65 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eger..        //
1f110 2f 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20  / offset...     
1f120 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1f130 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f140 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
1f150 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
1f160 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f170 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
1f180 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
1f190 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
1f1a0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
1f1b0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
1f1c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f1d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f1e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1f1f0 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
1f200 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
1f210 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
1f220 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
1f230 6f 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65  ocation that the
1f240 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f   new..        //
1f250 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
1f260 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
1f270 6e 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70  nstance should p
1f280 6f 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20  oint to...      
1f290 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1f2a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1f2b0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1f2c0 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20  // The new <see 
1f2d0 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
1f2e0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1f2f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f300 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1f310 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1f320 20 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f   IntPtr IntPtrFo
1f330 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
1f340 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
1f350 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
1f360 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20     int offset.. 
1f370 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1f380 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f390 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
1f3a0 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54  IntPtr(pointer.T
1f3b0 6f 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65  oInt64() + offse
1f3c0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
1f3d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1f3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f400 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1f430 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f440 20 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75      /// Rounds u
1f450 70 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a  p an integer siz
1f460 65 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75  e to the next mu
1f470 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c  ltiple of the al
1f480 69 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  ignment...      
1f490 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f4a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1f4b0 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22  aram name="size"
1f4c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f4d0 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65  he size, in byte
1f4e0 73 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64  s, to be rounded
1f4f0 20 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   up...        //
1f500 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f510 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1f520 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e  ame="alignment">
1f530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f540 65 20 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e  e required align
1f550 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74  ment for the ret
1f560 75 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  urn value...    
1f570 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1f580 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1f590 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1f5a0 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69   /// The size, i
1f5b0 6e 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64  n bytes, rounded
1f5c0 20 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20   up to the next 
1f5d0 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d  multiple of the.
1f5e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69  .        /// ali
1f5f0 67 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61  gnment.  This va
1f600 6c 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62  lue may end up b
1f610 65 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73  eing the same as
1f620 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20   the original.. 
1f630 20 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e         /// size.
1f640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f650 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f660 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1f670 69 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20  int RoundUp(..  
1f680 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
1f690 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze,..           
1f6a0 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a   int alignment..
1f6b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1f6c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1f6d0 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d        int alignm
1f6e0 65 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c  entMinusOne = al
1f6f0 69 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20  ignment - 1;..  
1f700 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1f710 20 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d   ((size + alignm
1f720 65 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e  entMinusOne) & ~
1f730 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e  alignmentMinusOn
1f740 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
1f750 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1f760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1f7b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f7c0 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
1f7d0 65 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69  es the offset, i
1f7e0 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20  n bytes, of the 
1f7f0 6e 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d  next structure m
1f800 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ember...        
1f810 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1f820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1f830 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
1f840 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f850 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79  he offset, in by
1f860 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72  tes, of the curr
1f870 65 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ent structure me
1f880 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
1f890 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f8a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f8b0 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20  name="size">..  
1f8c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69        /// The si
1f8d0 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  ze, in bytes, of
1f8e0 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72   the current str
1f8f0 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
1f900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f910 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f920 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
1f930 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20  lignment">..    
1f940 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67      /// The alig
1f950 6e 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c  nment, in bytes,
1f960 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72   of the next str
1f970 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
1f980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f990 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f9a0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1f9b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66       /// The off
1f9c0 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  set, in bytes, o
1f9d0 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63  f the next struc
1f9e0 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
1f9f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1fa00 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1fa10 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20  blic static int 
1fa20 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
1fa30 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
1fa40 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
1fa50 20 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20      int size,.. 
1fa60 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
1fa70 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  lignment..      
1fa80 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1fa90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1faa0 72 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f  return RoundUp(o
1fab0 66 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c  ffset + size, al
1fac0 69 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20  ignment);..     
1fad0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
1fae0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1faf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1fb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb20 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
1fb40 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d         #region M
1fb50 61 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70  arshal Read Help
1fb60 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1fb70 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1fb80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
1fb90 65 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66  eads a <see cref
1fba0 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
1fbb0 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69  e from the speci
1fbc0 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  fied memory..   
1fbd0 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f       /// locatio
1fbe0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
1fbf0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1fc00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1fc10 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
1fc20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1fc30 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
1fc40 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
1fc50 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
1fc60 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
1fc70 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
1fc80 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
1fc90 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1fca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1fcb0 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
1fcc0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1fcd0 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
1fce0 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
1fcf0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
1fd00 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20   where the..    
1fd10 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1fd20 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
1fd30 75 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73  ue to be read is
1fd40 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
1fd50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1fd60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1fd70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1fd80 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1fd90 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
1fda0 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66  ue at the specif
1fdb0 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ied memory locat
1fdc0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
1fdd0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1fde0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1fdf0 74 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33  tic int ReadInt3
1fe00 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2(..            
1fe10 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
1fe20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1fe30 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
1fe40 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1fe50 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
1fe60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1fe70 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
1fe80 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
1fe90 61 64 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c  adInt32(pointer,
1fea0 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65   offset);..#else
1feb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1fec0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
1fed0 64 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72  dInt32(IntPtrFor
1fee0 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
1fef0 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69  offset));..#endi
1ff00 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1ff10 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ff60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ff70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1ff80 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73    /// Reads a <s
1ff90 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
1ffa0 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  /> value from th
1ffb0 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
1ffc0 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
1ffd0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
1ffe0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1fff0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20000 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
20010 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
20020 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
20030 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
20040 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
20050 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
20060 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
20070 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
20080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20090 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
200a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
200b0 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
200c0 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
200d0 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
200e0 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
200f0 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
20100 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
20110 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
20120 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
20130 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
20140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20150 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20160 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
20170 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20180 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
20190 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65   /> value at the
201a0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
201b0 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
201c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
201d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
201e0 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  lic static long 
201f0 52 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20  ReadInt64(..    
20200 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
20210 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
20220 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d       int offset.
20230 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
20240 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
20250 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20260 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
20270 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61         return Ma
20280 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28  rshal.ReadInt64(
20290 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
202a0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
202b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
202c0 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49  shal.ReadInt64(I
202d0 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
202e0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29  ointer, offset))
202f0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
20300 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
20310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
20360 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
20380 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ads a <see cref=
20390 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
203a0 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69  e from the speci
203b0 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  fied memory..   
203c0 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f       /// locatio
203d0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
203e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
203f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20400 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
20410 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
20420 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
20430 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
20440 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
20450 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
20460 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
20470 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
20480 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
20490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
204a0 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
204b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
204c0 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
204d0 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
204e0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
204f0 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20   where the..    
20500 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
20510 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f  f="Double" /> to
20520 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61   be read is loca
20530 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
20540 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20550 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
20560 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20570 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  he <see cref="Do
20580 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 61  uble" /> value a
20590 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
205a0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
205b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
205c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
205d0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
205e0 64 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62 6c  double ReadDoubl
205f0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
20600 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
20610 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
20620 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
20630 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
20640 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
20650 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20660 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
20670 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74  eturn BitConvert
20680 65 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44 6f  er.Int64BitsToDo
20690 75 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65 61  uble(Marshal.Rea
206a0 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  dInt64(..       
206b0 20 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72           pointer
206c0 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c  , offset));..#el
206d0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
206e0 72 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72  return BitConver
206f0 74 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74  ter.ToDouble(Bit
20700 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74  Converter.GetByt
20710 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
20720 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65 61       Marshal.Rea
20730 64 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72  dInt64(IntPtrFor
20740 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
20750 6f 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a  offset))), 0);..
20760 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
20770 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
20780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
207d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
207e0 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73         /// Reads
207f0 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49   an <see cref="I
20800 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
20810 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69  from the specifi
20820 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
20830 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
20840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20850 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20860 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20870 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
20880 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
20890 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
208a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
208b0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
208c0 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
208d0 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
208e0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
208f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20900 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20910 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
20920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20930 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
20940 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
20950 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
20960 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
20970 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
20980 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75  "IntPtr" /> valu
20990 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20  e to be read is 
209a0 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
209b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
209c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
209d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
209e0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
209f0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c  ="IntPtr" /> val
20a00 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66  ue at the specif
20a10 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ied memory locat
20a20 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
20a30 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
20a40 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
20a50 74 69 63 20 49 6e 74 50 74 72 20 52 65 61 64 49  tic IntPtr ReadI
20a60 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
20a70 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
20a80 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
20a90 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20   int offset..   
20aa0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
20ab0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
20ac0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20ad0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
20ae0 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
20af0 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f 69  l.ReadIntPtr(poi
20b00 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  nter, offset);..
20b10 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
20b20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
20b30 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e 74  l.ReadIntPtr(Int
20b40 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
20b50 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d  nter, offset));.
20b60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
20b70 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
20b80 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
20b90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20bc0 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
20be0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72       #region Mar
20bf0 73 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70 65  shal Write Helpe
20c00 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
20c10 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20c20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72  ..        /// Wr
20c30 69 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65  ites an <see cre
20c40 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
20c50 75 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  ue to the specif
20c60 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
20c70 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
20c80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20c90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
20ca0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20cb0 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
20cc0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20cd0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
20ce0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20cf0 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
20d00 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
20d10 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
20d20 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
20d30 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20d50 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
20d60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20d70 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
20d80 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
20d90 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
20da0 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
20db0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
20dc0 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
20dd0 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20  e to be written 
20de0 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
20df0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20e00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20e10 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
20e20 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
20e30 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
20e40 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
20e50 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
20e60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
20e70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20e80 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
20e90 65 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20  eInt32(..       
20ea0 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
20eb0 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
20ec0 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
20ed0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76             int v
20ee0 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
20ef0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
20f00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20f10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20f20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
20f30 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70  hal.WriteInt32(p
20f40 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
20f50 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
20f60 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
20f70 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49  hal.WriteInt32(I
20f80 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
20f90 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c  ointer, offset),
20fa0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
20fb0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
20fc0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
20fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ff0 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
21010 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21020 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21030 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c   /// Writes an <
21040 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
21050 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
21060 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
21070 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
21080 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
21090 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
210a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
210b0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
210c0 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
210d0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
210e0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
210f0 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
21100 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
21110 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
21120 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
21130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21140 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21150 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21160 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
21170 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
21180 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
21190 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
211a0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
211b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
211c0 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
211d0 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
211e0 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
211f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21200 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
21210 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21220 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
21230 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
21240 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
21250 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
21260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21270 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21280 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
21290 69 64 20 57 72 69 74 65 49 6e 74 36 34 28 0d 0a  id WriteInt64(..
212a0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
212b0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
212c0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
212d0 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
212e0 20 20 6c 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20    long value..  
212f0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
21300 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
21310 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21320 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
21330 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
21340 65 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20  eInt64(pointer, 
21350 6f 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d  offset, value);.
21360 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
21370 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
21380 65 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72  eInt64(IntPtrFor
21390 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
213a0 6f 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b  offset), value);
213b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
213c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
213d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21410 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21420 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21430 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
21440 74 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  tes a <see cref=
21450 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
21460 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
21470 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
21480 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
21490 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
214a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
214b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
214c0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
214d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
214e0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
214f0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
21500 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
21510 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
21520 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
21530 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
21540 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21560 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
21570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21580 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
21590 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
215a0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
215b0 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
215c0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
215d0 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
215e0 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20  e to be written 
215f0 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
21600 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
21610 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
21620 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
21630 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
21640 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
21650 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
21660 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20   to write...    
21670 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21680 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
21690 20 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69   static void Wri
216a0 74 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  teDouble(..     
216b0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
216c0 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
216d0 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d      int offset,.
216e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75  .            dou
216f0 62 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ble value..     
21700 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
21710 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
21720 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21730 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
21740 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
21750 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  t64(pointer, off
21760 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
21770 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74        BitConvert
21780 65 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34  er.DoubleToInt64
21790 42 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23  Bits(value));..#
217a0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
217b0 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
217c0 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt64(IntPtrForOf
217d0 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
217e0 66 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  fset),..        
217f0 20 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65          BitConve
21800 72 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74  rter.ToInt64(Bit
21810 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74  Converter.GetByt
21820 65 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d  es(value), 0));.
21830 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21840 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
21850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
218a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
218b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
218c0 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  es a <see cref="
218d0 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
218e0 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
218f0 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
21900 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
21910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
21920 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21930 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21940 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
21950 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21960 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21970 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21980 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
21990 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
219a0 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
219b0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
219c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
219d0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
219e0 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
219f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21a00 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
21a10 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
21a20 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
21a30 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
21a40 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
21a50 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
21a60 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
21a70 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
21a80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21a90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21aa0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
21ab0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21ac0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
21ad0 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
21ae0 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
21af0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21b00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21b10 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
21b20 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  eIntPtr(..      
21b30 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
21b40 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
21b50 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
21b60 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
21b70 74 72 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  tr value..      
21b80 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
21b90 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
21ba0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21bb0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
21bc0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
21bd0 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  Ptr(pointer, off
21be0 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  set, value);..#e
21bf0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
21c00 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
21c10 74 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66  tPtr(IntPtrForOf
21c20 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
21c30 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a  fset), value);..
21c40 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21c50 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
21c60 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
21c70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
21cc0 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65      #region Obje
21cd0 63 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ct Helper Method
21ce0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
21cf0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21d00 20 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20    /// Generates 
21d10 61 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75  a hash code valu
21d20 65 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74  e for the object
21d30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21d40 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
21d50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21d60 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
21d70 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a       /// The obj
21d80 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65  ect instance use
21d90 64 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74  d to calculate t
21da0 68 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20  he hash code... 
21db0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
21dc0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
21dd0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
21de0 65 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20  entity">..      
21df0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
21e00 66 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65  f different obje
21e10 63 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74  ct instances wit
21e20 68 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  h the same value
21e30 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20   should..       
21e40 20 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69   /// generate di
21e50 66 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64  fferent hash cod
21e60 65 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63  es, where applic
21e70 61 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61  able.  This para
21e80 6d 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  meter..        /
21e90 2f 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  // has no effect
21ea0 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   on the .NET Com
21eb0 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
21ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21ed0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21ee0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
21ef0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61        /// The ha
21f00 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f  sh code value -O
21f10 52 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f  R- zero if the o
21f20 62 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a  bject is null...
21f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
21f40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
21f50 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
21f60 74 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a  t GetHashCode(..
21f70 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
21f80 63 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20  ct value,..     
21f90 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e         bool iden
21fa0 74 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tity..          
21fb0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
21fc0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21fd0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21fe0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21ff0 69 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20  identity)..     
22000 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
22010 6e 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73  n RuntimeHelpers
22020 2e 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c  .GetHashCode(val
22030 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
22040 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22050 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72  value == null) r
22060 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20  eturn 0;..      
22070 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
22080 75 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  ue.GetHashCode()
22090 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
220a0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
220b0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
220c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
220d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
22120 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
22130 4d 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73  Module Base Clas
22140 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
22150 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
22160 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
22170 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69  nts a managed vi
22180 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
22190 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
221a0 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69  n...    /// It i
221b0 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64  s not sealed and
221c0 20 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73   must be used as
221d0 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   the base class 
221e0 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f  for any..    ///
221f0 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69   user-defined vi
22200 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
22210 6c 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65  le classes imple
22220 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65  mented in manage
22230 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
22240 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22250 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
22260 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64   class SQLiteMod
22270 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ule :..         
22280 20 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65     ISQLiteManage
22290 64 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69  dModule, /*ISQLi
222a0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a  teNativeModule,*
222b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
222c0 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f  Disposable /* NO
222d0 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20  T SEALED */..   
222e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
222f0 69 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65  ion SQLiteNative
22300 4d 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43  Module Private C
22310 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lass..        //
22320 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22330 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c       /// This cl
22340 61 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ass implements t
22350 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
22360 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
22370 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
22380 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 62 79 20  // interface by 
22390 66 6f 72 77 61 72 64 69 6e 67 20 74 68 6f 73 65  forwarding those
223a0 20 6d 65 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f   method calls to
223b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
223c0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
223d0 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
223e0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 74  ject instance it
223f0 20 63 6f 6e 74 61 69 6e 73 2e 20 20 49 66 20 74   contains.  If t
22400 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
22410 63 6f 6e 74 61 69 6e 65 64 20 3c 73 65 65 20 63  contained <see c
22420 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
22430 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
22440 74 61 6e 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61  tance is null, a
22450 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
22460 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
22470 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
22480 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73  le" /> methods s
22490 69 6d 70 6c 79 20 67 65 6e 65 72 61 74 65 20 61  imply generate a
224a0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  n..        /// e
224b0 72 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rror...        /
224c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
224d0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
224e0 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
224f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a  teNativeModule :
22500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22510 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d    ISQLiteNativeM
22520 6f 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61 62  odule, IDisposab
22530 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
22540 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
22550 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
22560 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ants..          
22570 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
22580 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22590 20 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c   This is the val
225a0 75 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79  ue that is alway
225b0 73 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22  s used for the "
225c0 6c 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20 20  logErrors"..    
225d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61          /// para
225e0 6d 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72  meter to the var
225f0 69 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f  ious static erro
22600 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f  r handling metho
22610 64 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20  ds provided..   
22620 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20           /// by 
22630 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
22640 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
22650 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
22660 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22670 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
22680 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f  private const bo
22690 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72  ol DefaultLogErr
226a0 6f 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  ors = true;.... 
226b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
226c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22710 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22720 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69           /// Thi
22730 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74  s is the value t
22740 68 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73  hat is always us
22750 65 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45  ed for the "logE
22760 78 63 65 70 74 69 6f 6e 73 22 0d 0a 20 20 20 20  xceptions"..    
22770 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61          /// para
22780 6d 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72  meter to the var
22790 69 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f  ious static erro
227a0 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f  r handling metho
227b0 64 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20  ds provided..   
227c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20           /// by 
227d0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
227e0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
227f0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
22800 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22810 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
22820 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f  private const bo
22830 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63  ol DefaultLogExc
22840 65 70 74 69 6f 6e 73 20 3d 20 74 72 75 65 3b 0d  eptions = true;.
22850 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
22860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
228b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
228c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
228d0 20 54 68 69 73 20 69 73 20 74 68 65 20 65 72 72   This is the err
228e0 6f 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20  or message text 
228f0 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f  used when the co
22900 6e 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20 20  ntained..       
22910 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
22920 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
22930 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22940 61 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61 69  ance is not avai
22950 6c 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  lable..         
22960 20 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72     /// for any r
22970 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eason...        
22980 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22990 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
229a0 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
229b0 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  ring ModuleNotAv
229c0 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73  ailableErrorMess
229d0 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  age =..         
229e0 20 20 20 20 20 20 20 22 6e 61 74 69 76 65 20 6d         "native m
229f0 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  odule implementa
22a00 74 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62  tion not availab
22a10 6c 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le";..          
22a20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
22a30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
22a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22a80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
22a90 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
22aa0 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
22ab0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22ac0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22ad0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
22ae0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
22af0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
22b00 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d  used to provide.
22b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22b20 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69   an implementati
22b30 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63  on of the <see c
22b40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
22b50 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
22b60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e            /// in
22b70 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20  terface...      
22b80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
22b90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
22ba0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
22bb0 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a  Module module;..
22bc0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
22bd0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
22be0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22c30 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
22c40 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
22c50 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
22c60 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
22c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22c80 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
22c90 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
22ca0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
22cb0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22cc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
22cd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
22ce0 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
22cf0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22d00 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
22d10 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
22d20 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20  t instance used 
22d30 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20  to provide..    
22d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69          /// an i
22d50 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
22d60 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
22d70 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
22d80 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ule" />..       
22d90 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61       /// interfa
22da0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce...           
22db0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
22dc0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
22dd0 63 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  c SQLiteNativeMo
22de0 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
22df0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
22e00 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
22e10 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
22e20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
22e40 69 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75  is.module = modu
22e50 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
22e60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
22e70 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
22e80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
22e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
22ee0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61  gion Private Sta
22ef0 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  tic Methods..   
22f00 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
22f10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22f20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
22f30 20 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73   table error mes
22f40 73 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74  sage to one that
22f50 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e   indicates the n
22f60 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20  ative..         
22f70 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d     /// module im
22f80 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20  plementation is 
22f90 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  not available...
22fa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22fb0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
22fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
22fd0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
22fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22ff0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
23000 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
23010 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
23020 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
23030 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
23040 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
23050 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
23060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23070 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c  / The value of <
23080 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
23090 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22  ErrorCode.Error"
230a0 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   />...          
230b0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
230c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
230d0 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c  ivate static SQL
230e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64  iteErrorCode Mod
230f0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
23100 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
23110 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
23120 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
23130 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
23140 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23150 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
23160 61 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20  ableError(null, 
23170 70 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f  pVtab, DefaultLo
23180 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20  gErrors,..      
23190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65                De
231a0 66 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f  faultLogExceptio
231b0 6e 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ns, ModuleNotAva
231c0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
231d0 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ge);....        
231e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
231f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
23200 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
23210 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
23220 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
23230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23260 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23270 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
23280 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
23290 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74    /// Sets the t
232a0 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61  able error messa
232b0 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69  ge to one that i
232c0 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74  ndicates the nat
232d0 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
232e0 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   /// module impl
232f0 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f  ementation is no
23300 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  t available...  
23310 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
23320 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23330 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
23340 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
23350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23360 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
23370 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
23380 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
23390 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
233a0 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
233b0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
233c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
233d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
233e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
233f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
23400 6c 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66  lue of <see cref
23410 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
23420 65 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20  e.Error" />...  
23430 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
23440 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
23450 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
23460 61 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  atic SQLiteError
23470 43 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  Code ModuleNotAv
23480 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
23490 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
234a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
234b0 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
234c0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
234d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
234e0 20 20 20 20 20 20 20 53 65 74 43 75 72 73 6f 72         SetCursor
234f0 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72  Error(null, pCur
23500 73 6f 72 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45  sor, DefaultLogE
23510 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
23520 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61              Defa
23530 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73  ultLogExceptions
23540 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  , ModuleNotAvail
23550 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
23560 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23570 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
23580 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
23590 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or;..           
235a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
235b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
235c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
235d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
23610 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
23620 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
23630 76 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73  veModule Members
23640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23650 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
23660 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
23670 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
23680 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
23690 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20  ule.xCreate" /> 
236a0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
236b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
236c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
236d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
236e0 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20  ="pDb">..       
236f0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
23700 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
23710 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
23720 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
23730 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
23740 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23750 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23760 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78  param name="pAux
23770 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
23780 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
23790 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
237a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
237b0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
237c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
237d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
237e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
237f0 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
23800 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
23810 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
23820 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
23830 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
23840 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
23850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23860 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
23870 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23880 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
23890 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
238a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
238b0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
238c0 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
238d0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
238e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
238f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23900 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
23910 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
23920 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
23930 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
23940 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
23950 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
23960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23970 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
23990 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22  am name="pError"
239a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
239b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
239c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
239d0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
239e0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
239f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23a00 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23a10 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
23a20 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
23a30 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
23a40 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
23a50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
23a60 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
23a70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23a80 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
23a90 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
23aa0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
23ab0 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Create(..       
23ac0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
23ad0 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  pDb,..          
23ae0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
23af0 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
23b00 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
23b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
23b20 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
23b30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
23b40 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
23b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b60 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
23b70 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
23b80 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
23b90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23ba0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
23bb0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
23bc0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
23bd0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
23be0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
23bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
23c00 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
23c10 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
23c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23c30 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
23c40 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
23c50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
23c70 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
23c80 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
23c90 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  omString(..     
23ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cb0 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69     ModuleNotAvai
23cc0 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67  lableErrorMessag
23cd0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
23ce0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23cf0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
23d00 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
23d10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
23d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23d30 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72  eturn module.xCr
23d40 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
23d50 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
23d60 70 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76  pAux, argc, argv
23d70 2c 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66  , ref pVtab, ref
23d80 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20   pError);..     
23d90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
23da0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
23db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
23df0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23e00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23e10 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
23e20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
23e30 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23e40 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
23e50 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
23e60 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23e70 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23e80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
23e90 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  pDb">..         
23ea0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
23eb0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
23ec0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
23ed0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
23ee0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
23ef0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23f00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
23f10 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
23f20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23f30 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
23f40 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
23f50 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
23f60 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
23f70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23f80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
23f90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
23fa0 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
23fb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
23fc0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
23fd0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
23fe0 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
23ff0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24000 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24010 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
24020 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
24030 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
24040 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
24050 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
24060 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
24070 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
24080 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
24090 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
240a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
240b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
240c0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
240d0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
240e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
240f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24100 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
24110 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
24120 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24130 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24140 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72  param name="pErr
24150 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
24160 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24170 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24180 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
24190 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
241a0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
241b0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
241c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
241d0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
241e0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
241f0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
24200 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24210 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
24220 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
24230 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
24240 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
24250 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
24260 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
24270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
24280 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
24290 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
242a0 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
242b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
242c0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
242d0 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
242e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
242f0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
24300 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
24310 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
24320 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20   pError..       
24330 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
24340 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
24360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
24370 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
24380 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
24390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
243b0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
243c0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
243d0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
243e0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
243f0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
24400 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
24410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24420 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
24430 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
24440 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
24450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24460 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
24470 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
24480 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
24490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244a0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
244b0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
244c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
244e0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
244f0 6c 65 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  le.xConnect(..  
24500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24510 20 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67    pDb, pAux, arg
24520 63 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74  c, argv, ref pVt
24530 61 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b  ab, ref pError);
24540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
24550 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
245b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
245c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
245d0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
245e0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
245f0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
24600 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
24610 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24620 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
24630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
24640 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
24650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24660 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24670 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24680 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
24690 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
246a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
246b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
246c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
246d0 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e  m name="pIndex">
246e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
246f0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24700 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24710 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
24720 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
24730 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24740 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
24750 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
24760 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
24770 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24780 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24790 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
247a0 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
247b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
247c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
247d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
247e0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
247f0 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d  ode xBestIndex(.
24800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24810 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
24820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24830 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20  IntPtr pIndex.. 
24840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
24850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
24860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24870 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
24880 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
24890 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
248a0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
248b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
248c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
248d0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
248e0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
248f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
24900 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
24910 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24920 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
24930 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
24940 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
24950 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
24960 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
24970 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70  ule.xBestIndex(p
24980 56 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a  Vtab, pIndex);..
24990 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
249a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
249b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24a00 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
24a10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24a20 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24a30 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24a40 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63  odule.xDisconnec
24a50 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
24a60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24a70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
24a80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
24a90 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
24aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24ab0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
24ac0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
24ad0 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
24ae0 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
24af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24b00 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
24b10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
24b20 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
24b30 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24b40 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24b50 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  NativeModule.xDi
24b60 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
24b70 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24b80 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
24b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
24ba0 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
24bb0 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
24bc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
24bd0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
24be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24bf0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
24c00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
24c10 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
24c20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
24c30 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
24c40 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
24c50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
24c60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
24c70 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
24c80 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
24c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ca0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
24cb0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
24cc0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
24cd0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
24ce0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
24cf0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
24d00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
24d10 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63  odule.xDisconnec
24d20 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  t(pVtab);..     
24d30 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24d40 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
24d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
24d90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24da0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24db0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24dc0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24dd0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24de0 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
24df0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24e00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24e10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24e20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
24e30 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
24e40 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24e50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
24e60 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
24e70 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
24e80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24e90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24eb0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
24ec0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
24ed0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
24ee0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
24ef0 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d  e.xDestroy" /> m
24f00 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
24f10 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
24f20 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
24f30 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
24f40 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28  orCode xDestroy(
24f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24f60 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
24f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
24f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24fa0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
24fb0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
24fc0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
24fd0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
24fe0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
24ff0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
25000 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
25010 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
25020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25030 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
25040 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
25050 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
25060 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
25070 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
25080 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
25090 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
250a0 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 28 70 56  dule.xDestroy(pV
250b0 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
250c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
250d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
250e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25110 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
25120 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
25130 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
25140 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25150 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25160 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  NativeModule.xOp
25170 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
25180 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25190 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
251a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
251b0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
251c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
251d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
251e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
251f0 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20  veModule.xOpen" 
25200 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25210 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25220 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
25230 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25240 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
25250 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
25260 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25270 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25280 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
25290 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
252a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
252b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
252c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
252d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
252e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
252f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25300 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
25310 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25320 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
25330 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
25340 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
25350 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20  rCode xOpen(..  
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
25370 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
25380 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
25390 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
253a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
253b0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
253c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
253d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
253e0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
253f0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
25400 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
25410 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
25420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
25430 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
25440 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
25450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25460 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
25470 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
25480 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25490 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
254a0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
254b0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
254c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
254d0 6f 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61  odule.xOpen(pVta
254e0 62 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b  b, ref pCursor);
254f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
25500 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25550 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
25560 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
25570 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25580 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25590 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
255a0 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20  eModule.xClose" 
255b0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
255c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
255d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
255e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
255f0 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
25600 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25610 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
25620 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
25630 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
25640 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
25650 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
25660 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
25670 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
25680 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25690 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
256a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
256b0 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
256c0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
256d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
256e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
256f0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
25700 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65  ErrorCode xClose
25710 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
25720 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
25730 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
25740 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
25750 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
25760 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
25770 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
25780 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
25790 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
257a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
257b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
257c0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
257d0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
257e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
257f0 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
25800 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
25810 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
25820 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
25830 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
25840 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20  pCursor);....   
25850 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25860 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73  urn module.xClos
25870 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  e(pCursor);..   
25880 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
25890 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
258a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
258e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
258f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25900 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25910 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25920 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25930 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
25940 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25950 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
25960 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25970 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25980 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
25990 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
259a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
259b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
259c0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
259d0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
259e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
259f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25a00 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
25a10 64 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20  dxNum">..       
25a20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25a30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25a40 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25a50 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
25a60 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25a70 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25a80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25a90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53  param name="idxS
25aa0 74 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  tr">..          
25ab0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25ac0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25ad0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
25ae0 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
25af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25b00 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
25b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
25b20 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d  am name="argc">.
25b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25b40 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25b50 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25b60 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
25b70 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
25b80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
25b90 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
25ba0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25bb0 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
25bc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25bd0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25be0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25bf0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
25c00 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25c10 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25c30 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25c40 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25c50 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25c60 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25c70 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
25c80 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
25c90 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
25ca0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
25cb0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
25cc0 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28  rorCode xFilter(
25cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25ce0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
25cf0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25d00 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a     int idxNum,..
25d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a  IntPtr idxStr,..
25d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d40 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
25d50 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
25d60 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20  r argv..        
25d70 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
25d80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25d90 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
25da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25db0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
25dc0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
25dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
25de0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
25df0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
25e00 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
25e10 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
25e20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
25e30 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
25e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e50 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
25e60 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45  AvailableCursorE
25e70 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rror(pCursor);..
25e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e90 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
25ea0 78 46 69 6c 74 65 72 28 70 43 75 72 73 6f 72 2c  xFilter(pCursor,
25eb0 20 69 64 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c   idxNum, idxStr,
25ec0 20 61 72 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20   argc, argv);.. 
25ed0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
25ee0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
25ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
25f30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25f40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
25f50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
25f60 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25f70 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25f80 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d  dule.xNext" /> m
25f90 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25fa0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
25fb0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25fc0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25fd0 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
25fe0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25ff0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26000 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26010 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74  le.xNext" /> met
26020 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26030 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
26040 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26050 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
26060 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26070 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26080 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26090 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
260a0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
260b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
260c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
260d0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
260e0 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20  ode xNext(..    
260f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
26100 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
26110 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
26120 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26150 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
26160 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
26170 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26180 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
26190 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
261a0 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
261b0 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
261c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
261d0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
261e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261f0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
26200 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
26210 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
26220 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
26230 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
26240 75 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f  ule.xNext(pCurso
26250 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
26260 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
26270 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
262c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
262d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
262e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
262f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
26300 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22  tiveModule.xEof"
26310 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26320 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
26330 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
26340 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26350 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
26360 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26370 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26380 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26390 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
263a0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
263b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
263c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
263d0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
263e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
263f0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
26400 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
26410 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d  odule.xEof" /> m
26420 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26430 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
26440 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
26450 70 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28  public int xEof(
26460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26470 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
26480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26490 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
264a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
264b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
264c0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
264d0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
264e0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
264f0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
26500 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
26510 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
26520 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
26530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26540 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
26550 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
26560 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26570 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
26580 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
26590 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
265a0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
265b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
265c0 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
265d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
265e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
265f0 20 6d 6f 64 75 6c 65 2e 78 45 6f 66 28 70 43 75   module.xEof(pCu
26600 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
26610 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26620 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26660 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
26670 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
26680 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
26690 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
266a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
266b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
266c0 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
266d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
266e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
266f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26700 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
26710 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
26720 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26730 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26740 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
26750 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
26760 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26770 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
26780 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
26790 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65  ram name="pConte
267a0 78 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  xt">..          
267b0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
267c0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
267d0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
267e0 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
267f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26800 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26820 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
26830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26840 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26850 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26860 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
26870 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26880 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
26890 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
268a0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
268b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
268c0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
268d0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
268e0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
268f0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
26900 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26910 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
26920 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
26930 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
26940 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
26950 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
26960 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
26970 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
26980 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20  pContext,..     
26990 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
269a0 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
269b0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
269c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
269d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
269e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
269f0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
26a00 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
26a10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26a30 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
26a40 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
26a50 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
26a60 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
26a70 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
26a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26a90 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
26aa0 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
26ab0 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  or(pCursor);....
26ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ad0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
26ae0 6f 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70  olumn(pCursor, p
26af0 43 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b  Context, index);
26b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26b10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
26b70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
26b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26b90 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26ba0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26bb0 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
26bc0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26bd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
26be0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
26bf0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26c00 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
26c10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26c20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26c30 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26c40 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
26c50 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26c60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
26c70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
26c80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26c90 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
26ca0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26cb0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26cc0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26cd0 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
26ce0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26cf0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
26d00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26d10 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
26d20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26d30 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26d40 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26d50 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
26d60 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26d70 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
26d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
26d90 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
26da0 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20  Code xRowId(..  
26db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
26dc0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
26dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26de0 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
26df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
26e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26e20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
26e30 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
26e40 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
26e50 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
26e60 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
26e70 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
26e80 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
26e90 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
26ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
26eb0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
26ec0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26ed0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
26ee0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
26ef0 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
26f00 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
26f10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26f20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43  module.xRowId(pC
26f30 75 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64  ursor, ref rowId
26f40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26f50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
26f60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fa0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
26fb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
26fc0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26fd0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26fe0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26ff0 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
27000 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
27010 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27020 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
27030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27040 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
27050 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27060 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27070 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27080 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
27090 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
270a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
270b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
270c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
270d0 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
270e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
270f0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27100 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27110 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d  le.xUpdate" /> m
27120 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27130 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
27140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27150 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
27160 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
27170 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27180 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27190 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55  eNativeModule.xU
271a0 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  pdate" /> method
271b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
271c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
271d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
271e0 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
271f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27200 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27210 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27220 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
27230 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
27240 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27250 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
27260 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
27270 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
27280 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
27290 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
272a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
272b0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
272c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
272d0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
272e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
272f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
27300 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
27310 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
27320 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
27330 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
27340 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27350 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
27360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27370 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
27380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27390 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
273a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
273b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
273c0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
273d0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
273e0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
273f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
27400 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
27410 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
27420 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
27430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27440 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
27450 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
27460 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27470 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
27480 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
27490 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
274a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
274b0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 28 70 56  odule.xUpdate(pV
274c0 74 61 62 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  tab, argc, argv,
274d0 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20   ref rowId);..  
274e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
274f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
27500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27550 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
27560 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27570 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27580 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27590 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
275a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
275b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
275c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
275d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
275e0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
275f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27600 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27610 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27620 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
27630 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27640 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27650 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27660 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27670 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27680 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27690 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
276a0 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
276b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
276c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
276d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
276e0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
276f0 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
27700 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
27710 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
27720 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
27730 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27760 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
27770 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
27780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27790 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
277a0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
277b0 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
277c0 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
277d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
277e0 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
277f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27800 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
27810 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
27820 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
27830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27840 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
27850 78 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a  xBegin(pVtab);..
27860 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
27870 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
278d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
278e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
278f0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
27900 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
27910 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20  odule.xSync" /> 
27920 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
27930 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
27940 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
27950 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
27960 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
27970 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27980 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27990 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
279a0 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
279b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
279c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
279d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
279e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
279f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27a00 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27a10 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27a20 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
27a30 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27a40 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
27a50 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
27a60 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
27a70 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  de xSync(..     
27a80 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
27a90 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
27aa0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27ab0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27ac0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
27ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27ae0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
27af0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b10 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27b20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
27b30 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
27b40 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
27b50 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
27b60 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
27b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b80 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
27b90 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
27ba0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
27bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27bc0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53  return module.xS
27bd0 79 6e 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ync(pVtab);..   
27be0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27bf0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
27c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27c50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
27c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
27c70 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27c80 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27c90 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d  le.xCommit" /> m
27ca0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27cb0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
27cc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
27cd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27ce0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
27cf0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27d00 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27d10 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27d20 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
27d30 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27d40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
27d50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27d60 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
27d70 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27d80 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27d90 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27da0 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
27db0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27dc0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
27dd0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
27de0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
27df0 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a  rCode xCommit(..
27e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e10 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
27e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
27e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
27e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27e60 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
27e70 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
27e80 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
27e90 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
27ea0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
27eb0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
27ec0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
27ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
27ee0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
27ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27f00 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
27f10 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
27f20 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
27f30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27f40 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
27f50 6c 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74 61 62  le.xCommit(pVtab
27f60 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
27f70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27f80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fc0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
27fd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
27fe0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27ff0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28000 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28010 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
28020 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
28030 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28040 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
28050 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
28060 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
28070 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28080 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28090 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
280a0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
280b0 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
280c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
280d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
280e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
280f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
28100 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28110 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28120 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
28130 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f  llback" /> metho
28140 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28150 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
28160 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
28170 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
28180 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  de xRollback(.. 
28190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
281a0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
281b0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
281c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
281d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
281e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
281f0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
28200 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
28210 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
28220 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28230 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
28240 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
28250 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
28260 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
28270 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
28280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28290 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
282a0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
282b0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
282c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
282d0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
282e0 65 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61  e.xRollback(pVta
282f0 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
28300 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
28310 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28350 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28360 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
28370 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28380 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28390 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
283a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
283b0 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
283c0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
283d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
283e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
283f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
28400 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
28410 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28420 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28430 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28440 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
28450 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28460 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28470 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
28480 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28490 22 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20  "nArg">..       
284a0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
284b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
284c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
284d0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f  xFindFunction" /
284e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
284f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
28500 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
28510 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
28520 3d 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ="zName">..     
28530 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28540 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28550 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28560 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
28570 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28580 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
28590 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
285a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
285b0 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a  me="callback">..
285c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
285d0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
285e0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
285f0 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
28600 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
28610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28620 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28640 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
28650 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
28660 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28670 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28680 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28690 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
286a0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
286b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
286c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
286d0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
286e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
286f0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28700 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28710 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
28720 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
28730 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28740 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
28750 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
28760 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  int xFindFunctio
28770 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
28780 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
28790 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
287a0 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20     int nArg,..  
287b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
287c0 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
287d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
287e0 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
287f0 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  callback,..     
28800 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
28810 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
28820 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
28830 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
28840 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28850 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
28860 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
28870 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
28880 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
28890 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
288a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
288b0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
288c0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
288d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
288e0 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
288f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
28900 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
28920 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
28930 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
28940 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
28950 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30          return 0
28960 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
28970 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
28980 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
28990 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
289a0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
289b0 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 2c            pVtab,
289c0 20 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65   nArg, zName, re
289d0 66 20 63 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20  f callback, ref 
289e0 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20  pClientData);.. 
289f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
28a00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
28a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28a50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28a60 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
28a70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28a80 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28a90 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28aa0 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
28ab0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
28ad0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
28ae0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28af0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
28b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28b10 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28b20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28b30 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d  le.xRename" /> m
28b40 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28b50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28b70 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a  / <param name="z
28b80 4e 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  New">..         
28b90 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
28ba0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
28bb0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
28bc0 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
28bd0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28be0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28bf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
28c00 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
28c10 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28c20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28c30 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28c40 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
28c50 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28c60 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
28c70 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
28c80 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
28c90 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
28ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
28cb0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
28cc0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
28cd0 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20  tr zNew..       
28ce0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
28cf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28d00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28d20 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
28d30 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
28d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
28d60 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
28d70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
28d80 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
28d90 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
28da0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
28db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28dc0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
28dd0 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
28de0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
28df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e00 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
28e10 65 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65  ename(pVtab, zNe
28e20 77 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  w);..           
28e30 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
28e40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28e90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
28ea0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28eb0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28ec0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28ed0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
28ee0 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
28ef0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28f00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
28f10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28f20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
28f30 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
28f40 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28f50 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28f60 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
28f70 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
28f80 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28f90 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28fa0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28fb0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
28fc0 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
28fd0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
28fe0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
28ff0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29000 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
29010 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29020 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
29030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29040 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
29050 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29060 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29070 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29080 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20  ule.xSavepoint" 
29090 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
290a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
290b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
290c0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
290d0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
290e0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
290f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
29100 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
29110 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
29120 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
29130 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
29140 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29150 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
29160 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
29170 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
29180 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
291a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
291b0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
291c0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
291d0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
291e0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
291f0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
29200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
29210 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
29220 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
29230 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
29240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29250 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76  turn module.xSav
29260 65 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53  epoint(pVtab, iS
29270 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20  avepoint);..    
29280 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29290 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
292a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
292e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
292f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
29300 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29310 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29320 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29330 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
29340 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29350 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
29360 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29370 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29380 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
29390 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
293a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
293b0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
293c0 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
293d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
293e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
293f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29400 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
29410 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
29420 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29430 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29440 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29450 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20  le.xRelease" /> 
29460 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29470 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29480 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29490 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
294a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
294b0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
294c0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
294d0 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f  dule.xRelease" /
294e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
294f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
29500 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
29510 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
29520 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61  ErrorCode xRelea
29530 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
29540 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
29550 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
29560 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
29570 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
29580 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
29590 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
295a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
295b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
295c0 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
295d0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
295e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
295f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29600 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
29610 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
29620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29630 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
29640 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
29650 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
29660 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
29670 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
29680 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
29690 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
296a0 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  n module.xReleas
296b0 65 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f  e(pVtab, iSavepo
296c0 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
296d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
296e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
296f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29720 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
29730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
29740 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
29750 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29760 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29770 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
29780 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
29790 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
297a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
297b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
297c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
297d0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
297e0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
297f0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29800 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29810 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d  RollbackTo" /> m
29820 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29830 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
29840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29850 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
29860 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20  Savepoint">..   
29870 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29880 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29890 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
298a0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
298b0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
298c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
298d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
298e0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
298f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29900 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29910 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29920 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
29930 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ckTo" /> method.
29940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29950 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
29960 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
29970 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29980 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
29990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
299a0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
299b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
299c0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
299d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
299e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
299f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a00 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
29a10 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
29a20 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
29a30 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
29a40 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29a50 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
29a60 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
29a70 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
29a80 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
29a90 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
29aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29ab0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
29ac0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
29ad0 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
29ae0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
29af0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
29b00 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70  le.xRollbackTo(p
29b10 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74  Vtab, iSavepoint
29b20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29b30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
29b40 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
29b50 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29ba0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
29bb0 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
29bc0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
29bd0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
29be0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29bf0 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
29c00 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
29c10 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ance...         
29c20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
29c30 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
29c40 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
29c50 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se()..          
29c60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29c70 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
29c80 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
29c90 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
29ca0 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
29cb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
29cc0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
29cd0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
29ce0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
29cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29d30 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
29d40 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
29d50 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
29d60 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
29d70 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
29d80 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
29d90 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
29da0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
29db0 68 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72  hrows an <see cr
29dc0 65 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73  ef="ObjectDispos
29dd0 65 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20  edException" /> 
29de0 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a  if this object..
29df0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29e00 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
29e10 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
29e20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
29e30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29e40 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
29e50 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
29e60 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
29e70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
29e80 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f  f THROW_ON_DISPO
29e90 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  SED..           
29ea0 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
29eb0 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
29ec0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29ed0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
29ee0 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
29ef0 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
29f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f10 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
29f20 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29f30 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
29f40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
29f50 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
29f60 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
29f70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fb0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
29fc0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
29fd0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29fe0 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
29ff0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
2a000 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ance...         
2a010 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2a020 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a030 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2a040 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
2a050 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e           /// Non
2a060 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65  -zero if this me
2a070 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61  thod is being ca
2a080 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  lled from the.. 
2a090 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a0a0 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73  see cref="Dispos
2a0b0 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  e()" /> method. 
2a0c0 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65   Zero if this me
2a0d0 74 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a 20  thod is being.. 
2a0e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 63             /// c
2a0f0 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20 66  alled from the f
2a100 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
2a110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2a120 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2a130 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74   private /* prot
2a140 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f  ected virtual */
2a150 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
2a160 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
2a170 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a190 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
2a1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2a1b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a1c0 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
2a1d0 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
2a1e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
2a1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a200 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
2a210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a240 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73      //    // dis
2a250 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
2a260 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
2a270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a280 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
2a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2c0 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a300 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
2a310 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
2a320 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
2a330 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
2a340 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a350 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a390 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2a3b0 4e 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65  NOTE: The module
2a3c0 20 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79   is not owned by
2a3d0 20 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20   us; therefore, 
2a3e0 64 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  do not..        
2a3f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2a400 20 20 20 20 20 64 69 73 70 6f 73 65 20 69 74 2e       dispose it.
2a410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a420 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a440 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c   (module != null
2a450 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2a460 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2a470 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
2a480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a490 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65   disposed = true
2a4a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2a4b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2a4c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2a4d0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2a4e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
2a540 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
2a550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a560 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2a570 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e           /// Fin
2a580 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
2a590 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2a5a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2a5b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a5c0 20 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61 74        ~SQLiteNat
2a5d0 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  iveModule()..   
2a5e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a5f0 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
2a600 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
2a610 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2a620 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2a630 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
2a640 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2a650 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
2a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2a6b0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
2a6c0 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
2a6d0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2a6e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2a6f0 65 20 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f  e default versio
2a700 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  n of the native 
2a710 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
2a720 74 72 75 63 74 75 72 65 20 69 6e 20 75 73 65 2e  tructure in use.
2a730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2a740 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a750 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2a760 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65   readonly int De
2a770 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69  faultModuleVersi
2a780 6f 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20  on = 2;..       
2a790 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2a7a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7d0 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
2a7f0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2a800 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
2a810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2a820 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2a830 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2a840 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
2a850 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
2a860 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
2a870 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
2a880 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2a890 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
2a8a0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
2a8b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2a8c0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55         private U
2a8d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2a8e0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2a8f0 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d  e nativeModule;.
2a900 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
2a960 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2a970 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
2a980 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
2a990 74 6f 72 65 20 74 68 65 20 64 65 73 74 72 75 63  tore the destruc
2a9a0 74 6f 72 20 64 65 6c 65 67 61 74 65 20 74 6f 20  tor delegate to 
2a9b0 62 65 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20  be passed to..  
2a9c0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51        /// the SQ
2a9d0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2a9e0 79 20 76 69 61 20 74 68 65 20 73 71 6c 69 74 65  y via the sqlite
2a9f0 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
2aa00 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20  ble_module()..  
2aa10 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69        /// functi
2aa20 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2aa30 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2aa40 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73       private Uns
2aa50 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2aa60 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20  .xDestroyModule 
2aa70 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a  destroyModule;..
2aa80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2aa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2aae0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2aaf0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2ab00 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
2ab10 6f 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  ore a pointer to
2ab20 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
2ab30 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
2ab40 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
2ab50 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
2ab60 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
2ab70 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
2ab80 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
2ab90 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
2aba0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2abb0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2abc0 74 65 20 49 6e 74 50 74 72 20 64 69 73 70 6f 73  te IntPtr dispos
2abd0 61 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20  ableModule;.... 
2abe0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ac30 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2ac40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2ac50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2ac60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ac70 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
2ac80 73 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74  s used to hold t
2ac90 68 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69  he block of nati
2aca0 76 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 63  ve memory that c
2acb0 6f 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20 20  ontains..       
2acc0 20 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65 20   /// the native 
2acd0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
2ace0 74 72 75 63 74 75 72 65 20 61 73 73 6f 63 69 61  tructure associa
2acf0 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62  ted with this ob
2ad00 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
2ad10 2f 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20  / instance when 
2ad20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e  running on the .
2ad30 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
2ad40 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20  ework...        
2ad50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2ad60 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2ad70 49 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d 6f  IntPtr pNativeMo
2ad80 64 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dule;..#endif...
2ad90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adc0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2adf0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae00 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2ae10 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2ae20 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  re the virtual t
2ae30 61 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20 61  able instances a
2ae40 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
2ae50 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
2ae60 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61   module.  The na
2ae70 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
2ae80 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
2ae90 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
2aea0 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
2aeb0 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69  is used to key i
2aec0 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74  nto this collect
2aed0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
2aee0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2aef0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69        private Di
2af00 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c  ctionary<IntPtr,
2af10 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
2af20 62 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a  ble> tables;....
2af30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2af40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af60 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
2af80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2af90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2afa0 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2afb0 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2afc0 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2afd0 62 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74 61  ble cursor insta
2afe0 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nces..        //
2aff0 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
2b000 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20  h this module.  
2b010 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2b020 65 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  er to the..     
2b030 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76     /// sqlite3_v
2b040 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
2b050 65 64 20 73 74 72 75 63 74 75 72 65 20 69 73 20  ed structure is 
2b060 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f  used to key into
2b070 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
2b080 2f 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a  // collection...
2b090 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2b0a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2b0b0 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
2b0c0 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74  ry<IntPtr, SQLit
2b0d0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
2b0e0 73 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d  sor> cursors;...
2b0f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b140 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2b150 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2b160 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2b170 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2b180 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  re the virtual t
2b190 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e  able function in
2b1a0 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20  stances..       
2b1b0 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
2b1c0 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65  with this module
2b1d0 2e 20 20 54 68 65 20 63 61 73 65 2d 69 6e 73 65  .  The case-inse
2b1e0 6e 73 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e  nsitive function
2b1f0 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f   name..        /
2b200 2f 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65  // and the numbe
2b210 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 28  r of arguments (
2b220 77 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20  with -1 meaning 
2b230 22 61 6e 79 22 29 20 61 72 65 20 75 73 65 64 20  "any") are used 
2b240 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
2b250 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20 73 74  construct the st
2b260 72 69 6e 67 20 74 68 61 74 20 69 73 20 75 73 65  ring that is use
2b270 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68  d to key into th
2b280 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a  is collection...
2b290 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2b2a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2b2b0 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
2b2c0 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74  ry<string, SQLit
2b2d0 65 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74  eFunction> funct
2b2e0 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 23  ions;..        #
2b2f0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2b300 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b330 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
2b350 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2b360 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
2b370 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
2b380 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b390 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
2b3a0 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
2b3b0 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
2b3c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2b3d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2b3e0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2b3f0 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  name">..        
2b400 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
2b410 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69  the module.  Thi
2b420 73 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e  s parameter cann
2b430 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ot be null...   
2b440 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2b450 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
2b460 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73  c SQLiteModule(s
2b470 74 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20  tring name)..   
2b480 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2b490 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20      if (name == 
2b4a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2b4b0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
2b4c0 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63   ArgumentNullExc
2b4d0 65 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d  eption("name");.
2b4e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
2b4f0 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b  his.name = name;
2b500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2b510 69 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65 77 20  is.tables = new 
2b520 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74  Dictionary<IntPt
2b530 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  r, SQLiteVirtual
2b540 54 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20  Table>();..     
2b550 20 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 73         this.curs
2b560 6f 72 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f  ors = new Dictio
2b570 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c  nary<IntPtr, SQL
2b580 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
2b590 75 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20  ursor>();..     
2b5a0 20 20 20 20 20 20 20 74 68 69 73 2e 66 75 6e 63         this.func
2b5b0 74 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69 63 74  tions = new Dict
2b5c0 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53  ionary<string, S
2b5d0 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29  QLiteFunction>()
2b5e0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2b5f0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2b600 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2b660 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
2b670 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
2b680 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2b690 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c          /// Call
2b6a0 73 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  s the native SQL
2b6b0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
2b6c0 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 72 65   in order to cre
2b6d0 61 74 65 20 61 20 6e 65 77 0d 0a 20 20 20 20 20  ate a new..     
2b6e0 20 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c     /// disposabl
2b6f0 65 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e  e module contain
2b700 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  ing the implemen
2b710 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74  tation of a virt
2b720 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
2b730 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b740 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2b750 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
2b760 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2b770 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62  The native datab
2b780 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70  ase connection p
2b790 6f 69 6e 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a  ointer to use...
2b7a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2b7b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2b7c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2b7d0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
2b7e0 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
2b7f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
2b800 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2b810 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43   internal bool C
2b820 72 65 61 74 65 44 69 73 70 6f 73 61 62 6c 65 4d  reateDisposableM
2b830 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
2b840 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 0d 0a      IntPtr pDb..
2b850 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2b860 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b870 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
2b880 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
2b890 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2b8a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2b8b0 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20  rn true;....    
2b8c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2b8d0 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Name = IntPtr.Ze
2b8e0 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
2b8f0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2b900 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b910 20 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 53         pName = S
2b920 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
2b930 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
2b940 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  (name);....     
2b950 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
2b960 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2b970 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61  qlite3_module na
2b980 74 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20  tiveModule =..  
2b990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9a0 20 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65    AllocateNative
2b9b0 4d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Module();....   
2b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
2b9d0 74 72 6f 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77  troyModule = new
2b9e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2b9f0 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64  hods.xDestroyMod
2ba00 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
2ba10 20 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72            xDestr
2ba20 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69  oyModule);....#i
2ba30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2ba40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2ba50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
2ba60 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d  sposableModule =
2ba70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ba80 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
2ba90 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2baa0 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
2bab0 62 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20  ble_module(..   
2bac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bad0 20 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c       pDb, pName,
2bae0 20 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c   ref nativeModul
2baf0 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  e, IntPtr.Zero, 
2bb00 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  destroyModule);.
2bb10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bb20 20 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f     return (dispo
2bb30 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49  sableModule != I
2bb40 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65  ntPtr.Zero);..#e
2bb50 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  lif !SQLITE_STAN
2bb60 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
2bb70 20 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65        disposable
2bb80 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
2bb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
2bba0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2bbb0 73 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  s.sqlite3_create
2bbc0 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
2bbd0 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  le_interop(..   
2bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbf0 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20      pDb, pName, 
2bc00 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f  AllocateNativeMo
2bc10 64 75 6c 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a  duleInterop(),..
2bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc30 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2bc40 75 6c 65 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61  ule.iVersion, na
2bc50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
2bc60 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te,..           
2bc70 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2bc80 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
2bc90 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  t, nativeModule.
2bca0 78 42 65 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20  xBestIndex,..   
2bcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcc0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2bcd0 2e 78 44 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61  .xDisconnect, na
2bce0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
2bcf0 72 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  roy,..          
2bd00 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2bd10 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c  iveModule.xOpen,
2bd20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2bd30 6c 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  lose,..         
2bd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2bd50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2bd60 65 72 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  er, nativeModule
2bd70 2e 78 4e 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  .xNext,..       
2bd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd90 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f  nativeModule.xEo
2bda0 66 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  f, nativeModule.
2bdb0 78 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20  xColumn,..      
2bdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bdd0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2bde0 6f 77 49 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75  owId, nativeModu
2bdf0 6c 65 2e 78 55 70 64 61 74 65 2c 0d 0a 20 20 20  le.xUpdate,..   
2be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be10 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2be20 2e 78 42 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d  .xBegin, nativeM
2be30 6f 64 75 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20  odule.xSync,..  
2be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be50 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2be60 65 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76  e.xCommit, nativ
2be70 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2be80 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
2be90 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2bea0 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
2beb0 63 74 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64  ction, nativeMod
2bec0 75 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20  ule.xRename,..  
2bed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bee0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2bef0 65 2e 78 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61  e.xSavepoint, na
2bf00 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2bf10 61 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ase,..          
2bf20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2bf30 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
2bf40 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65  ackTo, IntPtr.Ze
2bf50 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c  ro, destroyModul
2bf60 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2bf70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64         return (d
2bf80 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20  isposableModule 
2bf90 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  != IntPtr.Zero);
2bfa0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2bfb0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2bfc0 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
2bfd0 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23  dException();..#
2bfe0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2bff0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2c000 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
2c010 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c020 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e            if (pN
2c030 61 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ame != IntPtr.Ze
2c040 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2c050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c060 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2c070 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e  teMemory.Free(pN
2c080 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
2c090 20 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65             pName
2c0a0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
2c0b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c0c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2c0d0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
2c0e0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2c0f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c140 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2c150 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
2c160 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2c170 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c180 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
2c190 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
2c1a0 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
2c1b0 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
2c1c0 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
2c1d0 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20       /// module 
2c1e0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2c1f0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
2c200 61 6e 63 65 20 69 73 20 62 65 69 6e 67 20 64 65  ance is being de
2c210 73 74 72 6f 79 65 64 20 64 75 65 0d 0a 20 20 20  stroyed due..   
2c220 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20       /// to its 
2c230 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
2c240 6e 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20  n being closed. 
2c250 20 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20   It may also be 
2c260 63 61 6c 6c 65 64 20 62 79 0d 0a 20 20 20 20 20  called by..     
2c270 20 20 20 2f 2f 2f 20 74 68 65 20 22 76 74 73 68     /// the "vtsh
2c280 69 6d 22 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68  im" module if/wh
2c290 65 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64  en the sqlite3_d
2c2a0 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20  ispose_module() 
2c2b0 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  function..      
2c2c0 20 20 2f 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e    /// is called.
2c2d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2c2e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2c2f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c300 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e  e="pClientData">
2c310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2c320 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  e native user-da
2c330 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
2c340 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
2c350 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61  module, as it wa
2c360 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  s..        /// p
2c370 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
2c380 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
2c390 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
2c3a0 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e  ve module instan
2c3b0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
2c3c0 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20  was created...  
2c3d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2c3e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
2c3f0 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
2c400 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  yModule(..      
2c410 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c        IntPtr pCl
2c420 69 65 6e 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20  ientData /* NOT 
2c430 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
2c440 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2c450 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
2c460 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
2c470 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20  / NOTE: At this 
2c480 70 6f 69 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65  point, just make
2c490 20 73 75 72 65 20 74 68 61 74 20 74 68 69 73 20   sure that this 
2c4a0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20  native module.. 
2c4b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2c4c0 20 20 20 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f      handle is no
2c4d0 74 20 72 65 75 73 65 64 2c 20 6e 6f 72 20 70 61  t reused, nor pa
2c4e0 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61  ssed into the na
2c4f0 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
2c500 20 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74    //       sqlit
2c510 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c  e3_dispose_modul
2c520 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74  e() function lat
2c530 65 72 20 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e  er (i.e. if/when
2c540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c550 20 20 20 20 20 20 20 74 68 65 20 44 69 73 70 6f         the Dispo
2c560 73 65 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 74  se() method of t
2c570 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2c580 6e 63 65 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d  nce is called)..
2c590 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
2c5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73  .            dis
2c5b0 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20  posableModule = 
2c5c0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
2c5d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2c5e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c630 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2c640 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2c650 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74   Creates and ret
2c660 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20  urns the native 
2c670 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74  sqlite_module st
2c680 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68  ructure using th
2c690 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
2c6a0 6f 6e 66 69 67 75 72 65 64 20 28 6f 72 20 64 65  onfigured (or de
2c6b0 66 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66  fault) <see cref
2c6c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2c6d0 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
2c6e0 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65     /// interface
2c6f0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2c700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2c710 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2c720 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2c730 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2c740 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d   native sqlite_m
2c750 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2c760 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67  using the config
2c770 75 72 65 64 20 28 6f 72 0d 0a 20 20 20 20 20 20  ured (or..      
2c780 20 20 2f 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c    /// default) <
2c790 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c7a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
2c7b0 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
2c7c0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
2c7d0 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2c7e0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2c7f0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2c800 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e UnsafeNativeMe
2c810 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2c820 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74  dule AllocateNat
2c830 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  iveModule()..   
2c840 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c850 20 20 20 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63      return Alloc
2c860 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  ateNativeModule(
2c870 47 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  GetNativeModuleI
2c880 6d 70 6c 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  mpl());..       
2c890 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2c8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
2c8f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c900 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2c910 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c920 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74         /// Creat
2c930 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  es and returns a
2c940 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62   memory block ob
2c950 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
2c960 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
2c970 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
2c980 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
2c990 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
2c9a0 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
2c9b0 72 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20  re for this..   
2c9c0 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20       /// object 
2c9d0 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75  instance when ru
2c9e0 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45  nning on the .NE
2c9f0 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
2ca00 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ork...        //
2ca10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2ca20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2ca30 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
2ca40 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
2ca50 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76  ter to the nativ
2ca60 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
2ca70 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
2ca80 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2ca90 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
2caa0 76 61 74 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f  vate IntPtr Allo
2cab0 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  cateNativeModule
2cac0 49 6e 74 65 72 6f 70 28 29 0d 0a 20 20 20 20 20  Interop()..     
2cad0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2cae0 20 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64    if (pNativeMod
2caf0 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ule == IntPtr.Ze
2cb00 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2cb10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2cb20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2cb30 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
2cb40 20 4e 6f 20 65 61 73 79 20 77 61 79 20 74 6f 20   No easy way to 
2cb50 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69  determine the si
2cb60 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  ze of the native
2cb70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cb80 20 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74    //       sqlit
2cb90 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
2cba0 72 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  re when running 
2cbb0 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  on the .NET..   
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2cbd0 20 20 20 20 20 20 43 6f 6d 70 61 63 74 20 46 72        Compact Fr
2cbe0 61 6d 65 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f  amework; therefo
2cbf0 72 65 2c 20 6a 75 73 74 20 62 61 73 65 20 74 68  re, just base th
2cc00 65 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  e size..        
2cc10 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2cc20 20 6f 6e 20 77 68 61 74 20 77 65 20 6b 6e 6f 77   on what we know
2cc30 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
2cc40 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2cc50 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2cc60 54 68 65 72 65 20 69 73 20 6f 6e 65 20 69 6e 74  There is one int
2cc70 65 67 65 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  eger member...  
2cc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2cc90 20 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65         There are
2cca0 20 32 32 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69   22 function poi
2ccb0 6e 74 65 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20  nter members... 
2ccc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ccd0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2cce0 20 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65     pNativeModule
2ccf0 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e   = SQLiteMemory.
2cd00 41 6c 6c 6f 63 61 74 65 28 32 33 20 2a 20 49 6e  Allocate(23 * In
2cd10 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
2cd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2cd30 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  f (pNativeModule
2cd40 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
2cd50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd60 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2cd70 4f 75 74 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70  OutOfMemoryExcep
2cd80 74 69 6f 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f  tion("sqlite3_mo
2cd90 64 75 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  dule");..       
2cda0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2cdb0 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 4e 61        return pNa
2cdc0 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tiveModule;..   
2cdd0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2cde0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2cdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2ce40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2ce50 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
2ce60 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
2ce70 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2ce80 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2ce90 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
2cea0 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
2ceb0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2cec0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
2ced0 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20  /> interface..  
2cee0 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
2cef0 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
2cf00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2cf10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2cf20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
2cf30 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
2cf40 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
2cf50 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2cf60 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
2cf70 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ce implementatio
2cf80 6e 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n to..        //
2cf90 2f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  / use...        
2cfa0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2cfb0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2cfc0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
2cfd0 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   The native sqli
2cfe0 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  te_module struct
2cff0 75 72 65 20 75 73 69 6e 67 20 74 68 65 20 73 70  ure using the sp
2d000 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20  ecified..       
2d010 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
2d020 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d030 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
2d040 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2d050 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2d060 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2d070 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66     private Unsaf
2d080 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2d090 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c  qlite3_module Al
2d0a0 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75  locateNativeModu
2d0b0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2d0c0 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
2d0d0 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20  dule module..   
2d0e0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2d0f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d100 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20     nativeModule 
2d110 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d120 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2d130 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20  3_module();..   
2d140 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d150 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d  odule.iVersion =
2d160 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65   DefaultModuleVe
2d170 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  rsion;....      
2d180 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2d190 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2d1a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d1b0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d1c0 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d  Module.xCreate =
2d1d0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2d1e0 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65  eMethods.xCreate
2d1f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2d200 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72        module.xCr
2d210 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  eate);....      
2d220 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d230 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20  Module.xConnect 
2d240 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d250 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65  veMethods.xConne
2d260 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
2d270 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2d280 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  xConnect);....  
2d290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2d2a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
2d2b0 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61  Index = new Unsa
2d2c0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2d2d0 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
2d2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2f0 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64   module.xBestInd
2d300 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
2d310 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2d320 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
2d330 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2d340 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63  iveMethods.xDisc
2d350 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2d360 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2d370 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29  ule.xDisconnect)
2d380 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d390 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d3a0 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77  e.xDestroy = new
2d3b0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2d3c0 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a  hods.xDestroy(..
2d3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3e0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74      module.xDest
2d3f0 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  roy);....       
2d400 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d410 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65  odule.xOpen = ne
2d420 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d430 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20  thods.xOpen(..  
2d440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d450 20 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b    module.xOpen);
2d460 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d470 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d480 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e  .xClose = new Un
2d490 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d4a0 73 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  s.xClose(..     
2d4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2d4c0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a  odule.xClose);..
2d4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d4e0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2d4f0 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73  Filter = new Uns
2d500 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2d510 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  .xFilter(..     
2d520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2d530 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d  odule.xFilter);.
2d540 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d550 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2d560 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61  xNext = new Unsa
2d570 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2d580 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
2d590 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d5a0 6c 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20  le.xNext);....  
2d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2d5c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20  tiveModule.xEof 
2d5d0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d5e0 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d  veMethods.xEof(m
2d5f0 6f 64 75 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a  odule.xEof);....
2d600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d610 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2d620 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  lumn = new Unsaf
2d630 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2d640 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
2d650 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2d660 75 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d  ule.xColumn);...
2d670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d680 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2d690 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66  owId = new Unsaf
2d6a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2d6b0 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
2d6c0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d6d0 6c 65 2e 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20  le.xRowId);.... 
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2d6f0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64  ativeModule.xUpd
2d700 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ate = new Unsafe
2d710 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55  NativeMethods.xU
2d720 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
2d730 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d740 6c 65 2e 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a  le.xUpdate);....
2d750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d760 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
2d770 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  gin = new Unsafe
2d780 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42  NativeMethods.xB
2d790 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
2d7a0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d7b0 65 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20  e.xBegin);....  
2d7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2d7d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63  tiveModule.xSync
2d7e0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2d7f0 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63  iveMethods.xSync
2d800 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2d810 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53         module.xS
2d820 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ync);....       
2d830 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d840 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20  odule.xCommit = 
2d850 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2d860 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28  Methods.xCommit(
2d870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d880 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f        module.xCo
2d890 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mmit);....      
2d8a0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d8b0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2d8c0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2d8d0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c  iveMethods.xRoll
2d8e0 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
2d8f0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d900 65 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d  e.xRollback);...
2d910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d920 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2d930 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65  indFunction = ne
2d940 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d950 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74  thods.xFindFunct
2d960 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
2d970 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2d980 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b  .xFindFunction);
2d990 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d9a0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d9b0 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55  .xRename = new U
2d9c0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2d9d0 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  ds.xRename(..   
2d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d9f0 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29   module.xRename)
2da00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2da10 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2da20 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e  e.xSavepoint = n
2da30 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2da40 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e  ethods.xSavepoin
2da50 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2da60 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2da70 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20  Savepoint);.... 
2da80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2da90 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
2daa0 65 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  ease = new Unsaf
2dab0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2dac0 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
2dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2dae0 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d  dule.xRelease);.
2daf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2db00 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2db10 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65  xRollbackTo = ne
2db20 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2db30 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54  thods.xRollbackT
2db40 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
2db50 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2db60 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20  RollbackTo);..  
2db70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2db80 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
2db90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2dba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2dbb0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
2dbc0 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
2dbd0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72  ativeMethods.xCr
2dbe0 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
2dbf0 20 20 20 20 20 20 20 20 20 20 20 78 43 72 65 61             xCrea
2dc00 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
2dc10 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2dc20 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20  dule.xConnect = 
2dc30 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2dc40 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74  Methods.xConnect
2dc50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2dc60 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 29         xConnect)
2dc70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2dc80 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2dc90 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e  e.xBestIndex = n
2dca0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2dcb0 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65  ethods.xBestInde
2dcc0 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
2dcd0 20 20 20 20 20 20 20 20 78 42 65 73 74 49 6e 64          xBestInd
2dce0 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
2dcf0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2dd00 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
2dd10 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2dd20 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63  iveMethods.xDisc
2dd30 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2dd40 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
2dd50 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  sconnect);....  
2dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2dd70 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
2dd80 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  roy = new Unsafe
2dd90 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
2dda0 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
2ddb0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65               xDe
2ddc0 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  stroy);....     
2ddd0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2dde0 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20  eModule.xOpen = 
2ddf0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2de00 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f  Methods.xOpen(xO
2de10 70 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  pen);..         
2de20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2de30 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77  ule.xClose = new
2de40 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2de50 68 6f 64 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f  hods.xClose(xClo
2de60 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
2de70 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2de80 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e  dule.xFilter = n
2de90 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2dea0 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d  ethods.xFilter(.
2deb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dec0 20 20 20 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a       xFilter);..
2ded0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dee0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2def0 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
2df00 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2df10 4e 65 78 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20  Next(xNext);..  
2df20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2df30 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20  tiveModule.xEof 
2df40 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2df50 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 78  veMethods.xEof(x
2df60 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Eof);....       
2df70 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2df80 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
2df90 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2dfa0 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
2dfb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dfc0 20 20 20 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d        xColumn);.
2dfd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2dfe0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2dff0 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73  xRowId = new Uns
2e000 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e010 2e 78 52 6f 77 49 64 28 78 52 6f 77 49 64 29 3b  .xRowId(xRowId);
2e020 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e030 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e040 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55  .xUpdate = new U
2e050 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e060 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20  ds.xUpdate(..   
2e070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e080 20 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20   xUpdate);....  
2e090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e0a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
2e0b0 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
2e0c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67  tiveMethods.xBeg
2e0d0 69 6e 28 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20  in(xBegin);..   
2e0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e0f0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20  iveModule.xSync 
2e100 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e110 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28  veMethods.xSync(
2e120 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20  xSync);....     
2e130 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e140 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20  eModule.xCommit 
2e150 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e160 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69  veMethods.xCommi
2e170 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2e180 20 20 20 20 20 20 20 20 78 43 6f 6d 6d 69 74 29          xCommit)
2e190 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e1a0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e1b0 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65  e.xRollback = ne
2e1c0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e1d0 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28  thods.xRollback(
2e1e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e1f0 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29        xRollback)
2e200 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e210 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e220 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20  e.xFindFunction 
2e230 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e240 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46  veMethods.xFindF
2e250 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
2e260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46                xF
2e270 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d  indFunction);...
2e280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e290 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2e2a0 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61  ename = new Unsa
2e2b0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e2c0 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
2e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52                xR
2e2e0 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  ename);....     
2e2f0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e300 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
2e310 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  nt = new UnsafeN
2e320 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61  ativeMethods.xSa
2e330 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
2e340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53                xS
2e350 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
2e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e370 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2e380 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ase = new Unsafe
2e390 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2e3a0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
2e3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65               xRe
2e3c0 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  lease);....     
2e3d0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e3e0 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2e3f0 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
2e400 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2e410 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
2e420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e430 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20  xRollbackTo);.. 
2e440 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2e450 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2e460 72 6e 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b  rn nativeModule;
2e470 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2e480 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4b0 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
2e4d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2e4e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2e4f0 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 63   /// Creates a c
2e500 6f 70 79 20 6f 66 20 74 68 65 20 73 70 65 63 69  opy of the speci
2e510 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
2e520 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73  / <see cref="Uns
2e530 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e540 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22  .sqlite3_module"
2e550 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
2e560 6e 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce,..        //
2e570 2f 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 20  / using default 
2e580 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
2e590 66 6f 72 20 74 68 65 20 63 6f 6e 74 61 69 6e 65  for the containe
2e5a0 64 20 64 65 6c 65 67 61 74 65 73 20 77 68 65 6e  d delegates when
2e5b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65  ..        /// ne
2e5c0 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
2e5d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2e5e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2e5f0 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
2e600 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2e610 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2e620 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e630 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
2e640 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
2e650 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
2e660 6e 63 65 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20  nce to copy...  
2e670 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2e680 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
2e690 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2e6a0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
2e6b0 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65  see cref="Unsafe
2e6c0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2e6d0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e  lite3_module" />
2e6e0 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
2e6f0 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   /// instance...
2e700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2e710 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2e720 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61  private UnsafeNa
2e730 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
2e740 74 65 33 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e  te3_module CopyN
2e750 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  ativeModule(..  
2e760 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2e770 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2e780 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
2e790 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ule..           
2e7a0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
2e7b0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
2e7c0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2e7d0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65  qlite3_module ne
2e7e0 77 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20  wModule =..     
2e7f0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55             new U
2e800 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e810 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2e820 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
2e830 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56      newModule.iV
2e840 65 72 73 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e  ersion = module.
2e850 69 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20  iVersion;....   
2e860 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
2e870 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77  le.xCreate = new
2e880 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e890 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20  hods.xCreate(.. 
2e8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2e8b0 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 21  module.xCreate !
2e8c0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2e8d0 2e 78 43 72 65 61 74 65 20 3a 20 78 43 72 65 61  .xCreate : xCrea
2e8e0 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
2e8f0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43      newModule.xC
2e900 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
2e910 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e920 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  .xConnect(..    
2e930 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2e940 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20  ule.xConnect != 
2e950 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2e960 43 6f 6e 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65  Connect : xConne
2e970 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct);....        
2e980 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42      newModule.xB
2e990 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55  estIndex = new U
2e9a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e9b0 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  ds.xBestIndex(..
2e9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9d0 28 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  (module.xBestInd
2e9e0 65 78 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  ex != null) ? mo
2e9f0 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20  dule.xBestIndex 
2ea00 3a 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a  : xBestIndex);..
2ea10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2ea20 77 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  wModule.xDisconn
2ea30 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
2ea40 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
2ea50 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
2ea60 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2ea70 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2ea80 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2ea90 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d  e.xDisconnect :.
2eaa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eab0 20 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a   xDisconnect);..
2eac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2ead0 77 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  wModule.xDestroy
2eae0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2eaf0 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
2eb00 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
2eb10 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44        (module.xD
2eb20 65 73 74 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20  estroy != null) 
2eb30 3f 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  ? module.xDestro
2eb40 79 20 3a 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a  y : xDestroy);..
2eb50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2eb60 77 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20  wModule.xOpen = 
2eb70 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2eb80 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a  Methods.xOpen(..
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eba0 28 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d  (module.xOpen !=
2ebb0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2ebc0 78 4f 70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d  xOpen : xOpen);.
2ebd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2ebe0 65 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20  ewModule.xClose 
2ebf0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ec00 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65  veMethods.xClose
2ec10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ec20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73     (module.xClos
2ec30 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  e != null) ? mod
2ec40 75 6c 65 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c  ule.xClose : xCl
2ec50 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ose);....       
2ec60 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2ec70 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73  Filter = new Uns
2ec80 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ec90 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  .xFilter(..     
2eca0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2ecb0 6c 65 2e 78 46 69 6c 74 65 72 20 21 3d 20 6e 75  le.xFilter != nu
2ecc0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69  ll) ? module.xFi
2ecd0 6c 74 65 72 20 3a 20 78 46 69 6c 74 65 72 29 3b  lter : xFilter);
2ece0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ecf0 6e 65 77 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20  newModule.xNext 
2ed00 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ed10 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28  veMethods.xNext(
2ed20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ed30 20 20 28 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20    (module.xNext 
2ed40 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2ed50 65 2e 78 4e 65 78 74 20 3a 20 78 4e 65 78 74 29  e.xNext : xNext)
2ed60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ed70 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20   newModule.xEof 
2ed80 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ed90 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d  veMethods.xEof(.
2eda0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2edb0 20 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d   (module.xEof !=
2edc0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2edd0 78 45 6f 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d  xEof : xEof);...
2ede0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2edf0 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d  Module.xColumn =
2ee00 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ee10 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e  eMethods.xColumn
2ee20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ee30 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75     (module.xColu
2ee40 6d 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  mn != null) ? mo
2ee50 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78  dule.xColumn : x
2ee60 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Column);....    
2ee70 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2ee80 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55  e.xRowId = new U
2ee90 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2eea0 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  ds.xRowId(..    
2eeb0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2eec0 75 6c 65 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75  ule.xRowId != nu
2eed0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f  ll) ? module.xRo
2eee0 77 49 64 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a  wId : xRowId);..
2eef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2ef00 77 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  wModule.xUpdate 
2ef10 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ef20 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74  veMethods.xUpdat
2ef30 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2ef40 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64      (module.xUpd
2ef50 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ate != null) ? m
2ef60 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3a 20  odule.xUpdate : 
2ef70 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
2ef80 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
2ef90 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20  le.xBegin = new 
2efa0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2efb0 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20  ods.xBegin(..   
2efc0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2efd0 64 75 6c 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e  dule.xBegin != n
2efe0 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42  ull) ? module.xB
2eff0 65 67 69 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d  egin : xBegin);.
2f000 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2f010 65 77 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d  ewModule.xSync =
2f020 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f030 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d  eMethods.xSync(.
2f040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f050 20 28 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21   (module.xSync !
2f060 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2f070 2e 78 53 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b  .xSync : xSync);
2f080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f090 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  newModule.xCommi
2f0a0 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
2f0b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d  tiveMethods.xCom
2f0c0 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mit(..          
2f0d0 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43        (module.xC
2f0e0 6f 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  ommit != null) ?
2f0f0 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20   module.xCommit 
2f100 3a 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20  : xCommit);.... 
2f110 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f120 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d  dule.xRollback =
2f130 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f140 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61  eMethods.xRollba
2f150 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
2f160 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f       (module.xRo
2f170 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20  llback != null) 
2f180 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ? module.xRollba
2f190 63 6b 20 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b  ck : xRollback);
2f1a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f1b0 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  newModule.xFindF
2f1c0 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e  unction = new Un
2f1d0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f1e0 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  s.xFindFunction(
2f1f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f200 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46    (module.xFindF
2f210 75 6e 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  unction != null)
2f220 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46   ? module.xFindF
2f230 75 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20  unction :..     
2f240 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64             xFind
2f250 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20  Function);....  
2f260 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2f270 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65  ule.xRename = ne
2f280 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f290 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a  thods.xRename(..
2f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f2b0 28 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20  (module.xRename 
2f2c0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2f2d0 65 2e 78 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e  e.xRename : xRen
2f2e0 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
2f2f0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f300 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20  Savepoint = new 
2f310 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2f320 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d  ods.xSavepoint(.
2f330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f340 20 28 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f   (module.xSavepo
2f350 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  int != null) ? m
2f360 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2f370 20 3a 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d   : xSavepoint);.
2f380 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2f390 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  ewModule.xReleas
2f3a0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2f3b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c  tiveMethods.xRel
2f3c0 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ease(..         
2f3d0 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2f3e0 52 65 6c 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29  Release != null)
2f3f0 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61   ? module.xRelea
2f400 73 65 20 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d  se : xRelease);.
2f410 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2f420 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ewModule.xRollba
2f430 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66  ckTo = new Unsaf
2f440 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f450 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20  RollbackTo(..   
2f460 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2f470 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
2f480 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
2f490 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a  le.xRollbackTo :
2f4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f4b0 20 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d    xRollbackTo);.
2f4c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
2f4d0 65 74 75 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b  eturn newModule;
2f4e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2f4f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2f500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2f540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2f550 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2f560 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f   /// Calls one o
2f570 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
2f580 62 6c 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  ble initializati
2f590 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  on methods...   
2f5a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2f5b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2f5c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72   <param name="cr
2f5d0 65 61 74 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  eate">..        
2f5e0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20  /// Non-zero to 
2f5f0 63 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72  call the <see cr
2f600 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
2f610 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22  edModule.Create"
2f620 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
2f630 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69   method; otherwi
2f640 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  se, the <see cre
2f650 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
2f660 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
2f670 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
2f680 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20   method will be 
2f690 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20  called...       
2f6a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2f6b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2f6c0 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20  m name="pDb">.. 
2f6d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2f6e0 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63  ative database c
2f6f0 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65  onnection handle
2f700 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2f710 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2f720 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2f730 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20  ="pAux">..      
2f740 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
2f750 61 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  al native pointe
2f760 72 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73  r value that was
2f770 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
2f780 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
2f790 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
2f7a0 75 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63  ule(), sqlite3_c
2f7b0 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28  reate_module_v2(
2f7c0 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ) or..        //
2f7d0 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  / sqlite3_create
2f7e0 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
2f7f0 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  le() functions..
2f800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2f810 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2f820 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2f830 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
2f840 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
2f850 66 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  f arguments from
2f860 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
2f870 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
2f880 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
2f890 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2f8a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2f8b0 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
2f8c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
2f8d0 61 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67  ay of string arg
2f8e0 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20  uments from the 
2f8f0 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
2f900 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ABLE..        //
2f910 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  / statement...  
2f920 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2f930 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
2f940 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
2f950 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
2f960 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
2f970 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
2f980 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
2f990 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20  to point to the 
2f9a0 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  newly..        /
2f9b0 2f 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69 76  // created nativ
2f9c0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
2f9d0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
2f9e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2f9f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2fa00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2fa10 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20  ="pError">..    
2fa20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69      /// Upon fai
2fa30 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d  lure, this param
2fa40 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
2fa50 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74  ified to point t
2fa60 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20  o the error..   
2fa70 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65       /// message
2fa80 2c 20 77 69 74 68 20 74 68 65 20 75 6e 64 65 72  , with the under
2fa90 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76  lying memory hav
2faa0 69 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65  ing been obtaine
2fab0 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
2fac0 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
2fad0 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f  malloc() functio
2fae0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
2faf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2fb00 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2fb10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
2fb20 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
2fb30 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
2fb40 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2fb50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
2fb60 76 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  vate SQLiteError
2fb70 43 6f 64 65 20 43 72 65 61 74 65 4f 72 43 6f 6e  Code CreateOrCon
2fb80 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
2fb90 20 20 20 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d     bool create,.
2fba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2fbb0 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
2fbc0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
2fbd0 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
2fbe0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
2fbf0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
2fc00 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gv,..           
2fc10 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
2fc20 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
2fc30 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
2fc40 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
2fc50 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2fc60 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2fc70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2fc80 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
2fc90 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53  ing fileName = S
2fca0 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
2fcb0 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
2fcc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2fcd0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
2fce0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2fcf0 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70  e3_db_filename(p
2fd00 44 62 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  Db, IntPtr.Zero)
2fd10 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2fd20 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c        using (SQL
2fd30 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
2fd40 6e 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53  nnection = new S
2fd50 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  QLiteConnection(
2fd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fd70 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 66            pDb, f
2fd80 69 6c 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29  ileName, false))
2fd90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fda0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2fdb0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
2fdc0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
2fdd0 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  e = null;..     
2fde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2fdf0 74 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75  tring error = nu
2fe00 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
2fe10 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
2fe20 63 72 65 61 74 65 20 26 26 20 43 72 65 61 74 65  create && Create
2fe30 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75  (connection, pAu
2fe40 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
2fe50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe60 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
2fe70 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38  ingArrayFromUtf8
2fe80 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72  SizeAndIntPtr(ar
2fe90 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
2fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2feb0 20 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c   argv), ref tabl
2fec0 65 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d  e, ref error) ==
2fed0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2fee0 2e 4f 6b 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  .Ok) ||..       
2fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff00 20 28 21 63 72 65 61 74 65 20 26 26 20 43 6f 6e   (!create && Con
2ff10 6e 65 63 74 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c  nect(connection,
2ff20 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
2ff30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff40 20 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67      SQLiteString
2ff50 2e 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d  .StringArrayFrom
2ff60 55 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74  Utf8SizeAndIntPt
2ff70 72 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  r(argc,..       
2ff80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff90 20 20 20 20 20 61 72 67 76 29 2c 20 72 65 66 20       argv), ref 
2ffa0 74 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f 72  table, ref error
2ffb0 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  ) == SQLiteError
2ffc0 43 6f 64 65 2e 4f 6b 29 29 0d 0a 20 20 20 20 20  Code.Ok))..     
2ffd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2ffe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fff0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61            if (ta
30000 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ble != null)..  
30010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30020 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30040 20 20 20 20 20 70 56 74 61 62 20 3d 20 54 61 62       pVtab = Tab
30050 6c 65 54 6f 49 6e 74 50 74 72 28 74 61 62 6c 65  leToIntPtr(table
30060 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
30070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30080 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
30090 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20  orCode.Ok;..    
300a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
300c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
300d0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
300e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
300f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30100 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72              pErr
30110 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
30120 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
30130 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  String(..       
30140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30150 20 20 20 20 20 20 20 20 20 22 6e 6f 20 74 61 62           "no tab
30160 6c 65 20 77 61 73 20 63 72 65 61 74 65 64 22 29  le was created")
30170 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30180 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
301b0 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
301c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
301e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
301f0 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
30200 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
30210 6f 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b  omString(error);
30220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30230 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30240 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30250 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30260 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
30270 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f  ception e) /* NO
30280 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41  TE: Must catch A
30290 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  LL. */..        
302a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
302b0 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20         pError = 
302c0 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
302d0 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
302e0 67 28 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b  g(e.ToString());
302f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
30300 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
30310 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
30320 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20  rCode.Error;..  
30330 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30340 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30390 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
303a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
303b0 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68   Calls one of th
303c0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
303d0 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74  finalization met
303e0 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  hods...        /
303f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
30400 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
30410 6d 20 6e 61 6d 65 3d 22 64 65 73 74 72 6f 79 22  m name="destroy"
30420 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
30430 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20  on-zero to call 
30440 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
30450 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
30460 75 6c 65 2e 44 65 73 74 72 6f 79 22 20 2f 3e 0d  ule.Destroy" />.
30470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
30480 68 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  hod; otherwise, 
30490 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
304a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
304b0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
304c0 2e 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20  .Disconnect" /> 
304d0 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 0d 0a  method will be..
304e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c          /// call
304f0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
30500 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30510 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30520 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
30530 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
30540 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
30550 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
30560 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
30570 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
30580 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30590 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
305a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
305b0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
305c0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
305d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
305e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
305f0 76 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  vate SQLiteError
30600 43 6f 64 65 20 44 65 73 74 72 6f 79 4f 72 44 69  Code DestroyOrDi
30610 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
30620 20 20 20 20 20 20 20 62 6f 6f 6c 20 64 65 73 74         bool dest
30630 72 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  roy,..          
30640 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
30650 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
30660 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30670 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
30680 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30690 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
306a0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
306b0 6c 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e  le = TableFromIn
306c0 74 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  tPtr(pVtab);....
306d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306e0 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c  if (table != nul
306f0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
30700 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30710 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
30720 64 65 73 74 72 6f 79 20 26 26 20 28 44 65 73 74  destroy && (Dest
30730 72 6f 79 28 74 61 62 6c 65 29 20 3d 3d 20 53 51  roy(table) == SQ
30740 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
30750 29 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  )) ||..         
30760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
30770 21 64 65 73 74 72 6f 79 20 26 26 20 28 44 69 73  !destroy && (Dis
30780 63 6f 6e 6e 65 63 74 28 74 61 62 6c 65 29 20 3d  connect(table) =
30790 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
307a0 65 2e 4f 6b 29 29 29 0d 0a 20 20 20 20 20 20 20  e.Ok)))..       
307b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307d0 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c          if (tabl
307e0 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
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 20 20 74 61 62 6c 65 73 2e           tables.
30810 52 65 6d 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a  Remove(pVtab);..
30820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30830 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
30840 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
30850 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .Ok;..          
30860 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30870 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
30880 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30890 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
308a0 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f   (Exception e) /
308b0 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74  * NOTE: Must cat
308c0 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20  ch ALL. */..    
308d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
308e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
308f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30900 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20  / NOTE: At this 
30910 70 6f 69 6e 74 2c 20 74 68 65 72 65 20 69 73 20  point, there is 
30920 6e 6f 20 77 61 79 20 74 6f 20 72 65 70 6f 72 74  no way to report
30930 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20   the error..    
30940 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
30950 20 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62       condition b
30960 61 63 6b 20 74 6f 20 74 68 65 20 63 61 6c 6c 65  ack to the calle
30970 72 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 75 73  r; therefore, us
30980 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
30990 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
309a0 6c 6f 67 67 69 6e 67 20 66 61 63 69 6c 69 74 79  logging facility
309b0 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20   instead...     
309c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
309d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
309e0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
309f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30a00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4c             if (L
30a10 6f 67 45 78 63 65 70 74 69 6f 6e 73 4e 6f 54 68  ogExceptionsNoTh
30a20 72 6f 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20  row)..          
30a30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a50 20 20 20 20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f       /* throw */
30a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30a70 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
30a80 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53  Log.LogMessage(S
30a90 51 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f  QLiteBase.COR_E_
30aa0 45 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20  EXCEPTION,..    
30ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ac0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
30ad0 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69  tiveMethods.Stri
30ae0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
30af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b00 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
30b10 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
30b20 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
30b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b40 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f  "Caught exceptio
30b50 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65 74  n in \"{0}\" met
30b60 68 6f 64 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  hod: {1}",..    
30b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b80 20 20 20 20 20 20 20 20 64 65 73 74 72 6f 79 20          destroy 
30b90 3f 20 22 78 44 65 73 74 72 6f 79 22 20 3a 20 22  ? "xDestroy" : "
30ba0 78 44 69 73 63 6f 6e 6e 65 63 74 22 2c 20 65 29  xDisconnect", e)
30bb0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
30bc0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30bd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
30bf0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
30c00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30c10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
30c20 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
30c30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30c40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30c50 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
30c60 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
30c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30c80 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74 61    FreeTable(pVta
30c90 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
30ca0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
30cb0 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
30cc0 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
30cd0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
30ce0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
30cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d10 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
30d30 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
30d40 20 53 74 61 74 69 63 20 45 72 72 6f 72 20 48 61   Static Error Ha
30d50 6e 64 6c 69 6e 67 20 48 65 6c 70 65 72 20 4d 65  ndling Helper Me
30d60 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
30d70 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
30d80 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67        /// Arrang
30d90 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  es for the speci
30da0 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61  fied error messa
30db0 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20  ge to be placed 
30dc0 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  into the..      
30dd0 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69    /// zErrMsg fi
30de0 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33  eld of a sqlite3
30df0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
30e00 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67  ructure, freeing
30e10 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
30e20 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72  / existing error
30e30 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79   message, if any
30e40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30e50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
30e60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30e70 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
30e80 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
30e90 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
30ea0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
30eb0 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
30ec0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
30ed0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
30ee0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
30ef0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
30f00 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
30f10 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
30f20 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
30f30 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
30f40 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
30f50 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
30f60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
30f70 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e  ame="logErrors">
30f80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
30f90 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65  n-zero if this e
30fa0 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f  rror message sho
30fb0 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67  uld also be logg
30fc0 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
30fd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
30fe0 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
30ff0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
31000 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
31010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
31020 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63  ram name="logExc
31030 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20  eptions">..     
31040 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
31050 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74  if caught except
31060 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  ions should be l
31070 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
31080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
31090 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
310a0 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
310b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
310c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
310d0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
310e0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
310f0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
31100 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
31110 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
31120 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
31130 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
31140 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
31150 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
31160 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
31170 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
31180 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54 61  tatic bool SetTa
31190 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
311a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
311b0 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
311c0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
311d0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
311e0 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f      bool logErro
311f0 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs,..           
31200 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69   bool logExcepti
31210 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ons,..          
31220 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a    string error..
31230 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
31240 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31250 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
31260 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31270 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
31280 67 45 72 72 6f 72 73 29 0d 0a 20 20 20 20 20 20  gErrors)..      
31290 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
312a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312b0 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65   SQLiteLog.LogMe
312c0 73 73 61 67 65 28 53 51 4c 69 74 65 45 72 72 6f  ssage(SQLiteErro
312d0 72 43 6f 64 65 2e 45 72 72 6f 72 2c 0d 0a 20 20  rCode.Error,..  
312e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312f0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
31300 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  veMethods.String
31310 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
31320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31330 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
31340 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
31350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31360 20 20 20 20 20 20 22 56 69 72 74 75 61 6c 20 74        "Virtual t
31370 61 62 6c 65 20 65 72 72 6f 72 3a 20 7b 30 7d 22  able error: {0}"
31380 2c 20 65 72 72 6f 72 29 29 3b 20 2f 2a 20 74 68  , error)); /* th
31390 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
313a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
313b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
313c0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
313d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
313e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
313f0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
31400 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31410 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75           bool su
31420 63 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a  ccess = false;..
31430 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
31440 74 72 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49  tr pNewError = I
31450 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
31460 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
31470 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
31490 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50  f (pVtab == IntP
314a0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
314b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
314c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
314d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
314e0 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a  nt offset = 0;..
314f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31500 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
31510 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
31520 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
31530 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
31540 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
31550 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
31560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31570 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
31580 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
31590 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
315a0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
315b0 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
315c0 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
315d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
315e0 20 20 49 6e 74 50 74 72 20 70 4f 6c 64 45 72 72    IntPtr pOldErr
315f0 6f 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  or = SQLiteMarsh
31600 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 56  al.ReadIntPtr(pV
31610 74 61 62 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  tab, offset);...
31620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31630 20 69 66 20 28 70 4f 6c 64 45 72 72 6f 72 20 21   if (pOldError !
31640 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
31650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31660 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31670 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
31680 6f 72 79 2e 46 72 65 65 28 70 4f 6c 64 45 72 72  ory.Free(pOldErr
31690 6f 72 29 3b 20 70 4f 6c 64 45 72 72 6f 72 20 3d  or); pOldError =
316a0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
316b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316c0 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
316d0 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 56 74  .WriteIntPtr(pVt
316e0 61 62 2c 20 6f 66 66 73 65 74 2c 20 70 4f 6c 64  ab, offset, pOld
316f0 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  Error);..       
31700 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
31710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
31720 20 28 65 72 72 6f 72 20 3d 3d 20 6e 75 6c 6c 29   (error == null)
31730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31740 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
31750 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
31760 20 20 20 20 20 20 70 4e 65 77 45 72 72 6f 72 20        pNewError 
31770 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55  = SQLiteString.U
31780 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
31790 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ing(error);..   
317a0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
317b0 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
317c0 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66  IntPtr(pVtab, of
317d0 66 73 65 74 2c 20 70 4e 65 77 45 72 72 6f 72 29  fset, pNewError)
317e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
317f0 20 20 20 73 75 63 63 65 73 73 20 3d 20 74 72 75     success = tru
31800 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
31810 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
31820 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
31830 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74  e) /* NOTE: Must
31840 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a   catch ALL. */..
31850 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31870 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31880 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31890 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
318a0 6f 67 45 78 63 65 70 74 69 6f 6e 73 29 0d 0a 20  ogExceptions).. 
318b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
318d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
318e0 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61  LiteLog.LogMessa
318f0 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e 43 4f  ge(SQLiteBase.CO
31900 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a  R_E_EXCEPTION,..
31910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31920 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
31930 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
31940 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
31950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31960 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
31970 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
31980 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
31990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319a0 20 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65      "Caught exce
319b0 70 74 69 6f 6e 20 69 6e 20 5c 22 53 65 74 54 61  ption in \"SetTa
319c0 62 6c 65 45 72 72 6f 72 5c 22 20 6d 65 74 68 6f  bleError\" metho
319d0 64 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20  d: {0}",..      
319e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319f0 20 20 20 20 20 20 65 29 29 3b 20 2f 2a 20 74 68        e)); /* th
31a00 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
31a10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31a40 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
31a50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a70 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
31a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
31aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
31ab0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
31ac0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31ad0 20 20 20 20 20 20 69 66 20 28 21 73 75 63 63 65        if (!succe
31ae0 73 73 20 26 26 20 28 70 4e 65 77 45 72 72 6f 72  ss && (pNewError
31af0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
31b00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
31b10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31b20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
31b30 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 65 77  Memory.Free(pNew
31b40 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  Error);..       
31b50 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e 65               pNe
31b60 77 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e  wError = IntPtr.
31b70 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
31b80 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31b90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
31ba0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 75         return su
31bb0 63 63 65 73 73 3b 0d 0a 20 20 20 20 20 20 20 20  ccess;..        
31bc0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
31bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
31c20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
31c30 20 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e         /// Arran
31c40 67 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63  ges for the spec
31c50 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73  ified error mess
31c60 61 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64  age to be placed
31c70 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20   into the..     
31c80 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66     /// zErrMsg f
31c90 69 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65  ield of a sqlite
31ca0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
31cb0 74 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e  tructure, freein
31cc0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
31cd0 2f 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f  // existing erro
31ce0 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e  r message, if an
31cf0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
31d00 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
31d10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
31d20 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
31d30 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
31d40 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
31d50 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
31d60 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
31d70 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
31d80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
31d90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31da0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
31db0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
31dc0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
31dd0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
31de0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
31df0 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20  e used to..     
31e00 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68     /// lookup th
31e10 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
31e20 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
31e30 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
31e40 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
31e50 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
31e60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
31e70 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72  m name="logError
31e80 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
31e90 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
31ea0 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  s error message 
31eb0 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c  should also be l
31ec0 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
31ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
31ee0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
31ef0 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
31f00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
31f10 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
31f20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67  <param name="log
31f30 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20  Exceptions">..  
31f40 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
31f50 72 6f 20 69 66 20 63 61 75 67 68 74 20 65 78 63  ro if caught exc
31f60 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62  eptions should b
31f70 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74  e logged using t
31f80 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
31f90 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
31fa0 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d  eLog" /> class..
31fb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
31fc0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
31fd0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
31fe0 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  error">..       
31ff0 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 6d   /// The error m
32000 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20  essage...       
32010 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
32030 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
32040 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20  / Non-zero upon 
32050 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
32060 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
32070 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
32080 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65  e static bool Se
32090 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20  tTableError(..  
320a0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
320b0 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a  Module module,..
320c0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
320d0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
320e0 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  able,..         
320f0 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72     bool logError
32100 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
32110 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f  bool logExceptio
32120 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns,..           
32130 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
32140 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32150 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32160 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20 3d       if (table =
32170 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
32180 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32190 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
321a0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
321b0 61 62 20 3d 20 74 61 62 6c 65 2e 4e 61 74 69 76  ab = table.Nativ
321c0 65 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20  eHandle;....    
321d0 20 20 20 20 20 20 20 20 69 66 20 28 70 56 74 61          if (pVta
321e0 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b == IntPtr.Zero
321f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32200 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
32210 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32220 72 65 74 75 72 6e 20 53 65 74 54 61 62 6c 65 45  return SetTableE
32230 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rror(..         
32240 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70         module, p
32250 56 74 61 62 2c 20 6c 6f 67 45 72 72 6f 72 73 2c  Vtab, logErrors,
32260 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20   logExceptions, 
32270 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  error);..       
32280 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
32290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
322e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
322f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61          /// Arra
32300 6e 67 65 73 20 66 6f 72 20 74 68 65 20 73 70 65  nges for the spe
32310 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73  cified error mes
32320 73 61 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65  sage to be place
32330 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20  d into the..    
32340 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20      /// zErrMsg 
32350 66 69 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74  field of a sqlit
32360 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
32370 73 74 72 75 63 74 75 72 65 2c 20 66 72 65 65 69  structure, freei
32380 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
32390 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72  /// existing err
323a0 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61  or message, if a
323b0 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ny...        ///
323c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
323d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
323e0 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a  name="module">..
323f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32400 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
32410 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
32420 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62  ct instance to b
32430 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  e used...       
32440 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32450 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
32460 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
32470 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
32480 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
32490 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
324a0 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
324b0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a  ived structure..
324c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
324d0 20 74 6f 20 67 65 74 20 74 68 65 20 6e 61 74 69   to get the nati
324e0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
324f0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
32500 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
32510 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
32520 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
32530 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32540 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
32550 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20  ogErrors">..    
32560 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
32570 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d   if this error m
32580 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c  essage should al
32590 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  so be logged usi
325a0 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
325b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
325c0 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
325d0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
325e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
325f0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32600 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e  me="logException
32610 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
32620 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75   Non-zero if cau
32630 67 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73  ght exceptions s
32640 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20  hould be logged 
32650 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
32660 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
32670 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
32680 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
32690 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
326a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
326b0 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
326c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
326d0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
326e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
326f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32700 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
32710 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
32720 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
32730 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
32740 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
32750 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
32760 62 6f 6f 6c 20 53 65 74 43 75 72 73 6f 72 45 72  bool SetCursorEr
32770 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ror(..          
32780 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d    SQLiteModule m
32790 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  odule,..        
327a0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
327b0 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
327c0 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c   bool logErrors,
327d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
327e0 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  ol logExceptions
327f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
32800 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20  tring error..   
32810 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
32820 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32830 20 20 20 69 66 20 28 70 43 75 72 73 6f 72 20 3d     if (pCursor =
32840 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
32850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32860 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
32870 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
32880 50 74 72 20 70 56 74 61 62 20 3d 20 54 61 62 6c  Ptr pVtab = Tabl
32890 65 46 72 6f 6d 43 75 72 73 6f 72 28 6d 6f 64 75  eFromCursor(modu
328a0 6c 65 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a 0d  le, pCursor);...
328b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
328c0 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72  (pVtab == IntPtr
328d0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
328e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
328f0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
32900 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54       return SetT
32910 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
32920 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
32930 6c 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72  le, pVtab, logEr
32940 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69  rors, logExcepti
32950 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20  ons, error);..  
32960 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
32970 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329a0 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
329c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
329d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
329e0 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
329f0 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
32a00 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
32a10 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
32a20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
32a30 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
32a40 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
32a50 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
32a60 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
32a70 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
32a80 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
32a90 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
32aa0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
32ab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32ac0 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
32ad0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
32ae0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
32af0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
32b00 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
32b10 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
32b20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
32b30 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
32b40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
32b50 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
32b60 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
32b70 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
32b80 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
32b90 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
32ba0 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  sed to..        
32bb0 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e  /// lookup the n
32bc0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
32bd0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
32be0 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
32bf0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
32c00 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
32c10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32c20 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e  ame="logErrors">
32c30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
32c40 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65  n-zero if this e
32c50 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f  rror message sho
32c60 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67  uld also be logg
32c70 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
32c80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
32c90 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
32ca0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
32cb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
32cc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
32cd0 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63  ram name="logExc
32ce0 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20  eptions">..     
32cf0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
32d00 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74  if caught except
32d10 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  ions should be l
32d20 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
32d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
32d40 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
32d50 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
32d60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
32d70 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
32d80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
32d90 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
32da0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
32db0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
32dc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
32dd0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
32de0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
32df0 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
32e00 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
32e10 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
32e20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
32e30 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75  tatic bool SetCu
32e40 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20  rsorError(..    
32e50 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
32e60 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20  dule module,..  
32e70 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
32e80 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
32e90 6f 72 20 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20  or cursor,..    
32ea0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67          bool log
32eb0 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
32ec0 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63       bool logExc
32ed0 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20  eptions,..      
32ee0 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
32ef0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
32f00 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
32f10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75            if (cu
32f20 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  rsor == null).. 
32f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
32f40 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
32f50 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
32f60 74 72 20 70 43 75 72 73 6f 72 20 3d 20 63 75 72  tr pCursor = cur
32f70 73 6f 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65  sor.NativeHandle
32f80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32f90 20 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20   if (pCursor == 
32fa0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
32fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
32fc0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
32fd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32fe0 6e 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72  n SetCursorError
32ff0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
33000 20 20 20 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73     module, pCurs
33010 6f 72 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c  or, logErrors, l
33020 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 65 72  ogExceptions, er
33030 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ror);..        }
33040 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
33050 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23 65  gion..        #e
33060 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
33070 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
330c0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
330d0 72 6f 74 65 63 74 65 64 20 4d 65 6d 62 65 72 73  rotected Members
330e0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
330f0 6e 20 4d 6f 64 75 6c 65 20 48 65 6c 70 65 72 20  n Module Helper 
33100 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
33110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
33120 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73          /// Gets
33130 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
33140 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
33150 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
33160 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20   /> interface.. 
33170 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
33180 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 62 65 20  mentation to be 
33190 75 73 65 64 20 77 68 65 6e 20 63 72 65 61 74 69  used when creati
331a0 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  ng the native sq
331b0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
331c0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
331d0 75 72 65 2e 20 20 44 65 72 69 76 65 64 20 63 6c  ure.  Derived cl
331e0 61 73 73 65 73 20 6d 61 79 20 6f 76 65 72 72 69  asses may overri
331f0 64 65 20 74 68 69 73 20 6d 65 74 68 6f 64 20 74  de this method t
33200 6f 20 73 75 70 70 6c 79 20 61 6e 0d 0a 20 20 20  o supply an..   
33210 20 20 20 20 20 2f 2f 2f 20 61 6c 74 65 72 6e 61       /// alterna
33220 74 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  te implementatio
33230 6e 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  n for the <see c
33240 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
33250 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
33260 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
33270 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ace...        //
33280 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
33290 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
332a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
332b0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
332c0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
332d0 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
332e0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
332f0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
33300 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 70 6f   be used when po
33310 70 75 6c 61 74 69 6e 67 20 74 68 65 20 6e 61 74  pulating the nat
33320 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ive sqlite3_modu
33330 6c 65 20 73 74 72 75 63 74 75 72 65 2e 20 20 49  le structure.  I
33340 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
33350 68 65 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75  he returned valu
33360 65 20 69 73 20 6e 75 6c 6c 2c 20 74 68 65 20 70  e is null, the p
33370 72 69 76 61 74 65 20 6d 65 74 68 6f 64 73 20 70  rivate methods p
33380 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a  rovided by the..
33390 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
333a0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
333b0 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20 61 6e  ule" /> class an
333c0 64 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 74 68  d relating to th
333d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
333e0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
333f0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
33400 3e 20 69 6e 74 65 72 66 61 63 65 20 20 77 69 6c  > interface  wil
33410 6c 20 62 65 20 75 73 65 64 20 74 6f 0d 0a 20 20  l be used to..  
33420 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65        /// create
33430 20 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 64   the necessary d
33440 65 6c 65 67 61 74 65 73 2e 0d 0a 20 20 20 20 20  elegates...     
33450 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
33460 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
33470 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 53 51  cted virtual ISQ
33480 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
33490 20 47 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65   GetNativeModule
334a0 49 6d 70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20  Impl()..        
334b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
334c0 65 74 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 4e  eturn null; /* N
334d0 4f 54 45 3a 20 55 73 65 20 74 68 65 20 62 75 69  OTE: Use the bui
334e0 6c 74 2d 69 6e 20 64 65 66 61 75 6c 74 20 64 65  lt-in default de
334f0 6c 65 67 61 74 65 73 2e 20 2a 2f 0d 0a 20 20 20  legates. */..   
33500 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33510 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33550 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
33560 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
33570 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
33580 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75  Creates and retu
33590 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65  rns the <see cre
335a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
335b0 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20  Module" />..    
335c0 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63      /// interfac
335d0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
335e0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74   corresponding t
335f0 6f 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  o the current.. 
33600 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
33610 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
33620 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
33630 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
33640 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
33650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
33660 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
33670 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
33680 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
33690 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72  Module" /> inter
336a0 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  face implementat
336b0 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ion..        ///
336c0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74   corresponding t
336d0 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 3c 73  o the current <s
336e0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
336f0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
33700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
33710 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
33720 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
33730 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
33740 65 64 20 76 69 72 74 75 61 6c 20 49 53 51 4c 69  ed virtual ISQLi
33750 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 43  teNativeModule C
33760 72 65 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  reateNativeModul
33770 65 49 6d 70 6c 28 29 0d 0a 20 20 20 20 20 20 20  eImpl()..       
33780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33790 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74  return new SQLit
337a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 74 68  eNativeModule(th
337b0 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  is);..        }.
337c0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
337d0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
337e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33820 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33830 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
33840 20 54 61 62 6c 65 20 48 65 6c 70 65 72 20 4d 65   Table Helper Me
33850 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
33860 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
33870 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61        /// Alloca
33880 74 65 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c  tes a native sql
33890 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
338a0 64 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 20  d structure and 
338b0 72 65 74 75 72 6e 73 20 61 0d 0a 20 20 20 20 20  returns a..     
338c0 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f     /// native po
338d0 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20  inter to it...  
338e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
338f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
33900 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
33910 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
33920 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  e pointer to a n
33930 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
33940 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
33950 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
33960 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
33970 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
33980 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
33990 41 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 0d  AllocateTable().
339a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
339b0 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
339c0 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
339d0 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
339e0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
339f0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
33a00 71 6c 69 74 65 33 5f 76 74 61 62 29 29 3b 0d 0a  qlite3_vtab));..
33a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
33a20 74 75 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72  turn SQLiteMemor
33a30 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29  y.Allocate(size)
33a40 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
33a50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
33a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
33aa0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33ab0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33ac0 20 20 2f 2f 2f 20 5a 65 72 6f 73 20 6f 75 74 20    /// Zeros out 
33ad0 74 68 65 20 66 69 65 6c 64 73 20 6f 66 20 61 20  the fields of a 
33ae0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
33af0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
33b00 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
33b10 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
33b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
33b30 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
33b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
33b50 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
33b60 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73   to the native s
33b70 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
33b80 76 65 64 20 73 74 72 75 63 74 75 72 65 20 74 6f  ved structure to
33b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 65  ..        /// ze
33ba0 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ro...        ///
33bb0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
33bc0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
33bd0 74 75 61 6c 20 76 6f 69 64 20 5a 65 72 6f 54 61  tual void ZeroTa
33be0 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
33bf0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
33c00 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
33c10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33c20 20 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20        if (pVtab 
33c30 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
33c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33c50 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
33c60 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
33c70 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  et = 0;....     
33c80 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
33c90 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
33ca0 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20  (pVtab, offset, 
33cb0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
33cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
33cd0 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
33ce0 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
33cf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
33d00 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
33d10 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69  r.Size, sizeof(i
33d20 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
33d30 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
33d40 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 56  al.WriteInt32(pV
33d50 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 30 29 3b  tab, offset, 0);
33d60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33d70 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
33d80 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
33d90 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
33da0 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
33db0 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74  zeof(int), IntPt
33dc0 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
33dd0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
33de0 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74  rshal.WriteIntPt
33df0 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c  r(pVtab, offset,
33e00 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
33e10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
33e20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
33e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
33e80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33e90 2f 2f 20 46 72 65 65 73 20 61 20 6e 61 74 69 76  // Frees a nativ
33ea0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73  e sqlite3_vtab s
33eb0 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74  tructure using t
33ec0 68 65 20 70 72 6f 76 69 64 65 64 20 6e 61 74 69  he provided nati
33ed0 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
33ee0 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a  pointer to it...
33ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
33f00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33f10 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
33f20 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
33f30 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70    /// A native p
33f40 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69  ointer to a nati
33f50 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
33f60 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
33f70 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
33f80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
33f90 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
33fa0 75 61 6c 20 76 6f 69 64 20 46 72 65 65 54 61 62  ual void FreeTab
33fb0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
33fc0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
33fd0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
33fe0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33ff0 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72       SetTableErr
34000 6f 72 28 70 56 74 61 62 2c 20 6e 75 6c 6c 29 3b  or(pVtab, null);
34010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
34020 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28  LiteMemory.Free(
34030 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20  pVtab);..       
34040 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
34050 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
34060 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34090 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
340b0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74       #region Nat
340c0 69 76 65 20 43 75 72 73 6f 72 20 48 65 6c 70 65  ive Cursor Helpe
340d0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
340e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
340f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
34100 6c 6f 63 61 74 65 73 20 61 20 6e 61 74 69 76 65  locates a native
34110 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
34120 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
34130 75 63 74 75 72 65 20 61 6e 64 0d 0a 20 20 20 20  ucture and..    
34140 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20      /// returns 
34150 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
34160 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20   to it...       
34170 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
34180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
34190 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
341a0 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69  /// A native poi
341b0 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65  nter to a native
341c0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
341d0 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
341e0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
341f0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
34200 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
34210 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74  ed virtual IntPt
34220 72 20 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72  r AllocateCursor
34230 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
34240 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
34250 69 7a 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ize = Marshal.Si
34260 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
34270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
34280 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
34290 73 2e 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  s.sqlite3_vtab_c
342a0 75 72 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20  ursor));....    
342b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
342c0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
342d0 63 61 74 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20  cate(size);..   
342e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
342f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34320 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
34340 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
34350 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34360 46 72 65 65 73 20 61 20 6e 61 74 69 76 65 20 73  Frees a native s
34370 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
34380 6f 72 20 73 74 72 75 63 74 75 72 65 20 75 73 69  or structure usi
34390 6e 67 20 74 68 65 20 70 72 6f 76 69 64 65 64 0d  ng the provided.
343a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74  .        /// nat
343b0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69  ive pointer to i
343c0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
343d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
343e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
343f0 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
34400 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61          /// A na
34410 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
34420 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  a native sqlite3
34430 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
34440 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
34450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
34460 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
34470 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
34480 20 76 6f 69 64 20 46 72 65 65 43 75 72 73 6f 72   void FreeCursor
34490 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
344a0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
344b0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
344c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
344d0 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
344e0 79 2e 46 72 65 65 28 70 43 75 72 73 6f 72 29 3b  y.Free(pCursor);
344f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
34500 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
34510 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
34520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34560 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
34570 65 67 69 6f 6e 20 53 74 61 74 69 63 20 54 61 62  egion Static Tab
34580 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64  le Lookup Method
34590 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
345a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
345b0 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e 64 20    /// Reads and 
345c0 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69  returns the nati
345d0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
345e0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
345f0 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
34600 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 62 61  /// structure ba
34610 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76  sed on the nativ
34620 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
34630 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
34640 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rsor..        //
34650 2f 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  / derived struct
34660 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
34670 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34680 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
34690 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
346a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
346b0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
346c0 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
346d0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20  ect instance to 
346e0 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  be used...      
346f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
34700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
34710 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
34720 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
34730 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
34740 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
34750 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
34760 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 0d  rived structure.
34770 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f  .        /// fro
34780 6d 20 77 68 69 63 68 20 74 6f 20 72 65 61 64 20  m which to read 
34790 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  the native point
347a0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
347b0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a  3_vtab derived..
347c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
347d0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
347e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
347f0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
34800 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
34810 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
34820 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
34830 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
34840 73 74 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a  structure -OR-..
34850 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
34860 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
34870 72 6f 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e  ro" /> if it can
34880 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
34890 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
348a0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
348b0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
348c0 69 63 20 49 6e 74 50 74 72 20 54 61 62 6c 65 46  ic IntPtr TableF
348d0 72 6f 6d 43 75 72 73 6f 72 28 0d 0a 20 20 20 20  romCursor(..    
348e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
348f0 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20  dule module,..  
34900 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
34910 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20   pCursor..      
34920 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
34930 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34940 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49  if (pCursor == I
34950 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
34960 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
34970 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
34980 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34990 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52  return Marshal.R
349a0 65 61 64 49 6e 74 50 74 72 28 70 43 75 72 73 6f  eadIntPtr(pCurso
349b0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  r);..        }..
349c0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
349d0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
349e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a20 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
34a30 20 23 72 65 67 69 6f 6e 20 54 61 62 6c 65 20 4c   #region Table L
34a40 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20  ookup Methods.. 
34a50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
34a60 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
34a70 2f 20 52 65 61 64 73 20 61 6e 64 20 72 65 74 75  / Reads and retu
34a80 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 70  rns the native p
34a90 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34aa0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
34ab0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
34ac0 73 74 72 75 63 74 75 72 65 20 62 61 73 65 64 20  structure based 
34ad0 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  on the native po
34ae0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
34af0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
34b00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
34b10 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
34b20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
34b30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
34b40 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
34b50 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
34b60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
34b70 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
34b80 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
34b90 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
34ba0 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20  structure..     
34bb0 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 77 68 69 63     /// from whic
34bc0 68 20 74 6f 20 72 65 61 64 20 74 68 65 20 6e 61  h to read the na
34bd0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
34be0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
34bf0 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
34c00 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
34c10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
34c20 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
34c30 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
34c40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
34c50 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
34c60 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
34c70 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
34c80 75 72 65 20 2d 4f 52 2d 0d 0a 20 20 20 20 20 20  ure -OR-..      
34c90 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
34ca0 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e  "IntPtr.Zero" />
34cb0 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
34cc0 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
34cd0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
34ce0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
34cf0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
34d00 49 6e 74 50 74 72 20 54 61 62 6c 65 46 72 6f 6d  IntPtr TableFrom
34d10 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
34d20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
34d30 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
34d40 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
34d50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
34d60 6e 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f  n TableFromCurso
34d70 72 28 74 68 69 73 2c 20 70 43 75 72 73 6f 72 29  r(this, pCursor)
34d80 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
34d90 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
34da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dc0 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
34de0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34df0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
34e00 20 20 2f 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61    /// Looks up a
34e10 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
34e20 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
34e30 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
34e40 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
34e50 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 62 61   /// instance ba
34e60 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76  sed on the nativ
34e70 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
34e80 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
34e90 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  rived..        /
34ea0 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
34eb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
34ec0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
34ed0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
34ee0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
34ef0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
34f00 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
34f10 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
34f20 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
34f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
34f40 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
34f50 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
34f60 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
34f70 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
34f80 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
34f90 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 6f  bject instance o
34fa0 72 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20  r null if..     
34fb0 20 20 20 2f 2f 2f 20 74 68 65 20 63 6f 72 72 65     /// the corre
34fc0 73 70 6f 6e 64 69 6e 67 20 6f 6e 65 20 63 61 6e  sponding one can
34fd0 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2e 0d 0a 20  not be found... 
34fe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
34ff0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
35000 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
35010 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
35020 62 6c 65 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  ble TableFromInt
35030 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
35040 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
35050 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
35060 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35070 20 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20        if (pVtab 
35080 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
35090 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
350a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
350b0 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56  SetTableError(pV
350c0 74 61 62 2c 20 22 69 6e 76 61 6c 69 64 20 6e 61  tab, "invalid na
350d0 74 69 76 65 20 74 61 62 6c 65 22 29 3b 0d 0a 20  tive table");.. 
350e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
350f0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
35100 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
35110 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
35120 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
35130 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  le;....         
35140 20 20 20 69 66 20 28 28 74 61 62 6c 65 73 20 21     if ((tables !
35150 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20  = null) &&..    
35160 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c              tabl
35170 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 70  es.TryGetValue(p
35180 56 74 61 62 2c 20 6f 75 74 20 74 61 62 6c 65 29  Vtab, out table)
35190 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
351a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
351b0 20 20 72 65 74 75 72 6e 20 74 61 62 6c 65 3b 0d    return table;.
351c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
351d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 65  ..            Se
351e0 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  tTableError(pVta
351f0 62 2c 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  b, UnsafeNativeM
35200 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
35210 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
35220 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
35230 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
35240 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
35250 20 20 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c     "managed tabl
35260 65 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f  e for {0} not fo
35270 75 6e 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a  und", pVtab));..
35280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
35290 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
352a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
352b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
352c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
35300 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
35310 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
35320 6c 6c 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74  llocates and ret
35330 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f  urns a native po
35340 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74  inter to a sqlit
35350 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
35360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
35370 75 63 74 75 72 65 20 61 6e 64 20 63 72 65 61 74  ucture and creat
35380 65 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f  es an associatio
35390 6e 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64  n between it and
353a0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
353b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
353c0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
353d0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
353e0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
353f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
35400 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
35410 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
35420 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
35430 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
35440 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
35450 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
35460 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62  ct instance to b
35470 65 20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20  e used..        
35480 2f 2f 2f 20 77 68 65 6e 20 63 72 65 61 74 69 6e  /// when creatin
35490 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f  g the associatio
354a0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
354b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
354c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
354d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
354e0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
354f0 74 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61  to a sqlite3_vta
35500 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
35510 75 72 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ure or..        
35520 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
35530 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69  ntPtr.Zero" /> i
35540 66 20 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69  f the method fai
35550 6c 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f  ls for any reaso
35560 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
35570 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
35580 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
35590 72 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62  rtual IntPtr Tab
355a0 6c 65 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20  leToIntPtr(..   
355b0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
355c0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
355d0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
355e0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
355f0 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61           if ((ta
35600 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  ble == null) || 
35610 28 74 61 62 6c 65 73 20 3d 3d 20 6e 75 6c 6c 29  (tables == null)
35620 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
35630 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
35640 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
35650 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
35660 61 62 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ab = IntPtr.Zero
35670 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ;..            b
35680 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61  ool success = fa
35690 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
356a0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
356b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
356c0 20 20 20 20 20 20 20 20 70 56 74 61 62 20 3d 20          pVtab = 
356d0 41 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 3b  AllocateTable();
356e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
356f0 20 20 20 20 69 66 20 28 70 56 74 61 62 20 21 3d      if (pVtab !=
35700 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
35710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
35720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35730 20 20 20 20 20 20 5a 65 72 6f 54 61 62 6c 65 28        ZeroTable(
35740 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20  pVtab);..       
35750 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
35760 6c 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  le.NativeHandle 
35770 3d 20 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20  = pVtab;..      
35780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
35790 62 6c 65 73 2e 41 64 64 28 70 56 74 61 62 2c 20  bles.Add(pVtab, 
357a0 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  table);..       
357b0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63               suc
357c0 63 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20  cess = true;..  
357d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
357e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
357f0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
35800 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
35810 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35820 20 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73      if (!success
35830 20 26 26 20 28 70 56 74 61 62 20 21 3d 20 49 6e   && (pVtab != In
35840 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
35850 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
35860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35870 20 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56      FreeTable(pV
35880 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
35890 20 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62             pVtab
358a0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
358b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
358c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
358d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
358e0 20 72 65 74 75 72 6e 20 70 56 74 61 62 3b 0d 0a   return pVtab;..
358f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35900 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
35910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35940 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
35970 69 6f 6e 20 43 75 72 73 6f 72 20 4c 6f 6f 6b 75  ion Cursor Looku
35980 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  p Methods..     
35990 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
359a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f  ..        /// Lo
359b0 6f 6b 73 20 75 70 20 61 6e 64 20 72 65 74 75 72  oks up and retur
359c0 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ns the <see cref
359d0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
359e0 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 0d 0a  ableCursor" />..
359f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
35a00 63 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65  ct instance base
35a10 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20  d on the native 
35a20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a  pointer to the..
35a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
35a40 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
35a50 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
35a60 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
35a70 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
35a80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
35a90 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
35aa0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
35ab0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
35ac0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
35ad0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
35ae0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
35af0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
35b00 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
35b10 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
35b20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
35b30 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
35b40 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
35b50 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
35b60 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
35b70 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
35b80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35b90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35ba0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
35bb0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
35bc0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
35bd0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
35be0 65 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20  e or null..     
35bf0 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 63 6f     /// if the co
35c00 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65 20  rresponding one 
35c10 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2e  cannot be found.
35c20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35c30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35c40 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
35c50 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61  ual SQLiteVirtua
35c60 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 43 75 72  lTableCursor Cur
35c70 73 6f 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a  sorFromIntPtr(..
35c80 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
35c90 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
35ca0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
35cb0 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
35cc0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
35cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
35ce0 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
35cf0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
35d00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35d10 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
35d20 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69  eError(pVtab, "i
35d30 6e 76 61 6c 69 64 20 6e 61 74 69 76 65 20 63 75  nvalid native cu
35d40 72 73 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20  rsor");..       
35d50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
35d60 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
35d70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
35d80 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
35d90 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
35da0 73 6f 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  sor;....        
35db0 20 20 20 20 69 66 20 28 28 63 75 72 73 6f 72 73      if ((cursors
35dc0 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
35dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75                cu
35de0 72 73 6f 72 73 2e 54 72 79 47 65 74 56 61 6c 75  rsors.TryGetValu
35df0 65 28 70 43 75 72 73 6f 72 2c 20 6f 75 74 20 63  e(pCursor, out c
35e00 75 72 73 6f 72 29 29 0d 0a 20 20 20 20 20 20 20  ursor))..       
35e10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35e20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
35e30 75 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  ursor;..        
35e40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
35e50 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72       SetTableErr
35e60 6f 72 28 70 56 74 61 62 2c 20 55 6e 73 61 66 65  or(pVtab, Unsafe
35e70 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74  NativeMethods.St
35e80 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
35e90 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
35ea0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
35eb0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
35ec0 20 20 20 20 20 20 20 20 20 20 22 6d 61 6e 61 67            "manag
35ed0 65 64 20 63 75 72 73 6f 72 20 66 6f 72 20 7b 30  ed cursor for {0
35ee0 7d 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70 43  } not found", pC
35ef0 75 72 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20  ursor));....    
35f00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
35f10 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
35f20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
35f80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
35f90 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74       /// Allocat
35fa0 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  es and returns a
35fb0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
35fc0 74 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61  to a sqlite3_vta
35fd0 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20  b_cursor..      
35fe0 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74    /// derived st
35ff0 72 75 63 74 75 72 65 20 61 6e 64 20 63 72 65 61  ructure and crea
36000 74 65 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69  tes an associati
36010 6f 6e 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e  on between it an
36020 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  d the..        /
36030 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  // specified <se
36040 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
36050 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
36060 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
36070 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
36080 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
36090 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
360a0 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e  m name="cursor">
360b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
360c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
360d0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
360e0 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
360f0 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 0d   instance to be.
36100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
36110 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  d when creating 
36120 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f 6e 2e  the association.
36130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36140 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
36150 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
36160 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
36170 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
36180 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f   a sqlite3_vtab_
36190 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
361a0 74 72 75 63 74 75 72 65 20 6f 72 0d 0a 20 20 20  tructure or..   
361b0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
361c0 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22  ef="IntPtr.Zero"
361d0 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 74 68 6f   /> if the metho
361e0 64 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79 20  d fails for any 
361f0 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  reason...       
36200 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
36210 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
36220 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74  ed virtual IntPt
36230 72 20 43 75 72 73 6f 72 54 6f 49 6e 74 50 74 72  r CursorToIntPtr
36240 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
36250 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
36260 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 0d 0a  eCursor cursor..
36270 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
36280 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36290 20 20 20 20 20 20 69 66 20 28 28 63 75 72 73 6f        if ((curso
362a0 72 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 63  r == null) || (c
362b0 75 72 73 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29 29  ursors == null))
362c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
362d0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
362e0 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
362f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
36300 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  sor = IntPtr.Zer
36310 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
36320 62 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66  bool success = f
36330 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
36340 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
36350 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36360 20 20 20 20 20 20 20 20 20 70 43 75 72 73 6f 72           pCursor
36370 20 3d 20 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f   = AllocateCurso
36380 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
36390 20 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72          if (pCur
363a0 73 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  sor != IntPtr.Ze
363b0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
363c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
363d0 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73              curs
363e0 6f 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  or.NativeHandle 
363f0 3d 20 70 43 75 72 73 6f 72 3b 0d 0a 20 20 20 20  = pCursor;..    
36400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36410 63 75 72 73 6f 72 73 2e 41 64 64 28 70 43 75 72  cursors.Add(pCur
36420 73 6f 72 2c 20 63 75 72 73 6f 72 29 3b 0d 0a 20  sor, cursor);.. 
36430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36440 20 20 20 73 75 63 63 65 73 73 20 3d 20 74 72 75     success = tru
36450 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
36460 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
36470 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
36480 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
36490 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
364a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73            if (!s
364b0 75 63 63 65 73 73 20 26 26 20 28 70 43 75 72 73  uccess && (pCurs
364c0 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or != IntPtr.Zer
364d0 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o))..           
364e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
364f0 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65              Free
36500 43 75 72 73 6f 72 28 70 43 75 72 73 6f 72 29 3b  Cursor(pCursor);
36510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36520 20 20 20 20 20 20 70 43 75 72 73 6f 72 20 3d 20        pCursor = 
36530 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
36540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
36550 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
36560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
36570 74 75 72 6e 20 70 43 75 72 73 6f 72 3b 0d 0a 20  turn pCursor;.. 
36580 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
36590 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
365a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
365b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
365c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
365d0 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
365f0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
36600 6f 6e 20 46 75 6e 63 74 69 6f 6e 20 4c 6f 6f 6b  on Function Look
36610 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  up Methods..    
36620 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
36630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
36640 65 74 65 72 69 6d 69 6e 65 73 20 74 68 65 20 6b  eterimines the k
36650 65 79 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62  ey that should b
36660 65 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69  e used to identi
36670 66 79 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65  fy and store the
36680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
36690 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46  ee cref="SQLiteF
366a0 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  unction" /> obje
366b0 63 74 20 69 6e 73 74 61 6e 63 65 20 66 6f 72 20  ct instance for 
366c0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
366d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28  e..        /// (
366e0 69 2e 65 2e 20 74 6f 20 62 65 20 72 65 74 75 72  i.e. to be retur
366f0 6e 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20  ned via the..   
36700 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
36710 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
36720 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
36730 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
36740 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  )...        /// 
36750 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
36760 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
36770 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75  ame="argumentCou
36780 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
36790 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
367a0 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65  arguments to the
367b0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66   virtual table f
367c0 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
367d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
367e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
367f0 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
36800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
36810 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72   name of the vir
36820 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e 63 74  tual table funct
36830 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
36840 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
36850 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
36860 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d  ame="function">.
36870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
36880 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
36890 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f  teFunction" /> o
368a0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
368b0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
368c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
368d0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66   virtual table f
368e0 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
368f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
36900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
36910 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
36920 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20 74 68  // The string th
36930 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  at should be use
36940 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 61 6e  d to identify an
36950 64 20 73 74 6f 72 65 20 74 68 65 20 76 69 72 74  d store the virt
36960 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ual..        ///
36970 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20   table function 
36980 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69 73 20  instance.  This 
36990 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 72 65  method cannot re
369a0 74 75 72 6e 20 6e 75 6c 6c 2e 20 20 49 66 20 6e  turn null.  If n
369b0 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ull..        ///
369c0 20 69 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f   is returned fro
369d0 6d 20 74 68 69 73 20 6d 65 74 68 6f 64 2c 20 74  m this method, t
369e0 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  he behavior is u
369f0 6e 64 65 66 69 6e 65 64 2e 0d 0a 20 20 20 20 20  ndefined...     
36a00 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
36a10 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
36a20 63 74 65 64 20 76 69 72 74 75 61 6c 20 73 74 72  cted virtual str
36a30 69 6e 67 20 47 65 74 46 75 6e 63 74 69 6f 6e 4b  ing GetFunctionK
36a40 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
36a50 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f 75   int argumentCou
36a60 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt,..           
36a70 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20   string name,.. 
36a80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36a90 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74 69  eFunction functi
36aa0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
36ab0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
36ac0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
36ad0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
36ae0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
36af0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
36b00 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
36b10 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
36b20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
36b30 20 20 20 22 7b 30 7d 3a 7b 31 7d 22 2c 20 61 72     "{0}:{1}", ar
36b40 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 6e 61 6d  gumentCount, nam
36b50 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
36b60 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
36b70 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
36b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36bc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36bd0 20 23 72 65 67 69 6f 6e 20 54 61 62 6c 65 20 44   #region Table D
36be0 65 63 6c 61 72 61 74 69 6f 6e 20 48 65 6c 70 65  eclaration Helpe
36bf0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
36c00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
36c10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74  ..        /// At
36c20 74 65 6d 70 74 73 20 74 6f 20 64 65 63 6c 61 72  tempts to declar
36c30 65 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72  e the schema for
36c40 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
36c50 6c 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  le using the..  
36c60 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
36c70 69 65 64 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ied database con
36c80 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
36c90 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
36ca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
36cb0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
36cc0 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
36cd0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
36ce0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
36cf0 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
36d00 69 6e 73 74 61 6e 63 65 20 74 6f 20 75 73 65 20  instance to use 
36d10 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  when..        //
36d20 2f 20 64 65 63 6c 61 72 69 6e 67 20 74 68 65 20  / declaring the 
36d30 73 63 68 65 6d 61 20 6f 66 20 74 68 65 20 76 69  schema of the vi
36d40 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 54 68  rtual table.  Th
36d50 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79  is parameter may
36d60 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f   not..        //
36d70 2f 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  / be null...    
36d80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
36d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
36da0 61 72 61 6d 20 6e 61 6d 65 3d 22 73 71 6c 22 3e  aram name="sql">
36db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
36dc0 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  e string contain
36dd0 69 6e 67 20 74 68 65 20 43 52 45 41 54 45 20 54  ing the CREATE T
36de0 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 74  ABLE statement t
36df0 68 61 74 20 63 6f 6d 70 6c 65 74 65 6c 79 0d 0a  hat completely..
36e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 63          /// desc
36e10 72 69 62 65 73 20 74 68 65 20 73 63 68 65 6d 61  ribes the schema
36e20 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
36e30 20 74 61 62 6c 65 2e 20 20 54 68 69 73 20 70 61   table.  This pa
36e40 72 61 6d 65 74 65 72 20 6d 61 79 20 6e 6f 74 0d  rameter may not.
36e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  .        /// be 
36e60 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
36e70 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
36e80 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
36e90 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
36ea0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
36eb0 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61  failure, this pa
36ec0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
36ed0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
36ee0 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20  ain an error..  
36ef0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67        /// messag
36f00 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
36f10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36f20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
36f30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
36f40 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
36f50 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
36f60 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
36f70 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
36f80 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 53  tected virtual S
36f90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44  QLiteErrorCode D
36fa0 65 63 6c 61 72 65 54 61 62 6c 65 28 0d 0a 20 20  eclareTable(..  
36fb0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36fc0 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
36fd0 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
36fe0 20 20 20 20 73 74 72 69 6e 67 20 73 71 6c 2c 0d      string sql,.
36ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
37000 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
37010 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
37020 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37030 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74       if (connect
37040 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion == null)..  
37050 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
37060 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
37070 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20 63 6f  or = "invalid co
37080 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20 20 20  nnection";..    
37090 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
370a0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
370b0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
370c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
370d0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
370e0 73 65 20 73 71 6c 69 74 65 42 61 73 65 20 3d 20  se sqliteBase = 
370f0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71 6c 3b  connection._sql;
37100 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37110 69 66 20 28 73 71 6c 69 74 65 42 61 73 65 20 3d  if (sqliteBase =
37120 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
37130 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37140 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
37150 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20  "connection has 
37160 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65 22 3b  invalid handle";
37170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37180 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
37190 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
371a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
371b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
371c0 20 28 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (sql == null)..
371d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
371e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
371f0 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20  rror = "invalid 
37200 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 22 3b 0d  SQL statement";.
37210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37220 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
37230 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
37240 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
37250 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
37260 75 72 6e 20 73 71 6c 69 74 65 42 61 73 65 2e 44  urn sqliteBase.D
37270 65 63 6c 61 72 65 56 69 72 74 75 61 6c 54 61 62  eclareVirtualTab
37280 6c 65 28 74 68 69 73 2c 20 73 71 6c 2c 20 72 65  le(this, sql, re
37290 66 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  f error);..     
372a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
372b0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
372c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
372d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372f0 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
37310 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 46         #region F
37320 75 6e 63 74 69 6f 6e 20 44 65 63 6c 61 72 61 74  unction Declarat
37330 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ion Helper Metho
37340 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
37350 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
37360 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65     /// Calls the
37370 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63   native SQLite c
37380 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f  ore library in o
37390 72 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20  rder to declare 
373a0 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20  a virtual..     
373b0 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 66 75 6e     /// table fun
373c0 63 74 69 6f 6e 20 69 6e 20 72 65 73 70 6f 6e 73  ction in respons
373d0 65 20 74 6f 20 61 20 63 61 6c 6c 20 69 6e 74 6f  e to a call into
373e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
373f0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
37400 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
37410 2e 78 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20  .xCreate" />..  
37420 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65        /// or <se
37430 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
37440 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
37450 6e 65 63 74 22 20 2f 3e 20 76 69 72 74 75 61 6c  nect" /> virtual
37460 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
37470 2f 2f 2f 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20  /// methods...  
37480 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
37490 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
374a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
374b0 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20  onnection">..   
374c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
374d0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
374e0 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a  nnection" /> obj
374f0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20  ect instance to 
37500 75 73 65 20 77 68 65 6e 0d 0a 20 20 20 20 20 20  use when..      
37510 20 20 2f 2f 2f 20 64 65 63 6c 61 72 69 6e 67 20    /// declaring 
37520 74 68 65 20 73 63 68 65 6d 61 20 6f 66 20 74 68  the schema of th
37530 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
37540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
37550 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
37560 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
37570 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e  "argumentCount">
37580 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
37590 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  e number of argu
375a0 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 66 75 6e  ments to the fun
375b0 63 74 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c  ction being decl
375c0 61 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ared...        /
375d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
375e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
375f0 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
37600 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
37610 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69  me of the functi
37620 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61 72 65  on being declare
37630 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
37640 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
37650 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
37660 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
37670 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
37680 63 65 73 73 2c 20 74 68 65 20 63 6f 6e 74 65 6e  cess, the conten
37690 74 73 20 6f 66 20 74 68 69 73 20 70 61 72 61 6d  ts of this param
376a0 65 74 65 72 20 61 72 65 20 75 6e 64 65 66 69 6e  eter are undefin
376b0 65 64 2e 20 20 55 70 6f 6e 0d 0a 20 20 20 20 20  ed.  Upon..     
376c0 20 20 20 2f 2f 2f 20 66 61 69 6c 75 72 65 2c 20     /// failure, 
376d0 69 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69  it should contai
376e0 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  n an appropriate
376f0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d   error message..
37700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
37710 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
37720 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
37730 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
37740 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
37750 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
37760 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
37770 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
37780 74 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69  ted virtual SQLi
37790 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65 63 6c  teErrorCode Decl
377a0 61 72 65 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  areFunction(..  
377b0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
377c0 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
377d0 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
377e0 20 20 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74      int argument
377f0 43 6f 75 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20  Count,..        
37800 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
37810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
37820 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a  f string error..
37830 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
37840 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37850 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63        if (connec
37860 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tion == null).. 
37870 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
37890 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20 63  ror = "invalid c
378a0 6f 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20 20  onnection";..   
378b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
378c0 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
378d0 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20  ode.Error;..    
378e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
378f0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
37900 61 73 65 20 73 71 6c 69 74 65 42 61 73 65 20 3d  ase sqliteBase =
37910 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71 6c   connection._sql
37920 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
37930 20 69 66 20 28 73 71 6c 69 74 65 42 61 73 65 20   if (sqliteBase 
37940 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
37950 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37960 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
37970 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73   "connection has
37980 20 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65 22   invalid handle"
37990 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
379a0 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
379b0 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
379c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
379d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
379e0 65 74 75 72 6e 20 73 71 6c 69 74 65 42 61 73 65  eturn sqliteBase
379f0 2e 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c 46  .DeclareVirtualF
37a00 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
37a10 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2c 20            this, 
37a20 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 6e  argumentCount, n
37a30 61 6d 65 2c 20 72 65 66 20 65 72 72 6f 72 29 3b  ame, ref error);
37a40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
37a50 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
37a60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
37a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
37ac0 65 67 69 6f 6e 20 45 72 72 6f 72 20 48 61 6e 64  egion Error Hand
37ad0 6c 69 6e 67 20 50 72 6f 70 65 72 74 69 65 73 0d  ling Properties.
37ae0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
37af0 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 3b   bool logErrors;
37b00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
37b10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
37b20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6f 72 20   /// Returns or 
37b30 73 65 74 73 20 61 20 62 6f 6f 6c 65 61 6e 20 76  sets a boolean v
37b40 61 6c 75 65 20 69 6e 64 69 63 61 74 69 6e 67 20  alue indicating 
37b50 77 68 65 74 68 65 72 20 76 69 72 74 75 61 6c 20  whether virtual 
37b60 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
37b70 2f 2f 20 65 72 72 6f 72 73 20 73 68 6f 75 6c 64  // errors should
37b80 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67   be logged using
37b90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
37ba0 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c  SQLiteLog" /> cl
37bb0 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
37bc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
37bd0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
37be0 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 4c 6f 67  virtual bool Log
37bf0 45 72 72 6f 72 73 4e 6f 54 68 72 6f 77 0d 0a 20  ErrorsNoThrow.. 
37c00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37c10 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
37c20 72 6e 20 6c 6f 67 45 72 72 6f 72 73 3b 20 7d 0d  rn logErrors; }.
37c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
37c40 20 7b 20 6c 6f 67 45 72 72 6f 72 73 20 3d 20 76   { logErrors = v
37c50 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
37c60 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
37c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cb0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
37cc0 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6c 6f   private bool lo
37cd0 67 45 78 63 65 70 74 69 6f 6e 73 3b 0d 0a 20 20  gExceptions;..  
37ce0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
37cf0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
37d00 20 52 65 74 75 72 6e 73 20 6f 72 20 73 65 74 73   Returns or sets
37d10 20 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65   a boolean value
37d20 20 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 74   indicating whet
37d30 68 65 72 20 65 78 63 65 70 74 69 6f 6e 73 0d 0a  her exceptions..
37d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 75 67          /// caug
37d50 68 74 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ht in the..     
37d60 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// &