System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact e9600975dfde004a4340486e4c92bb721e7d92ef:


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 0d 0a  obalization;....
0160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0180: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0190: 74 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72  time.CompilerSer
01a0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01b0: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52  ..using System.R
01c0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01d0: 72 76 69 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53  rvices;..using S
01e0: 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e  ystem.Text;....n
01f0: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0200: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a  Data.SQLite..{..
0210: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
0220: 74 65 43 6f 6e 74 65 78 74 20 48 65 6c 70 65 72  teContext Helper
0230: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
0240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0250: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
0260: 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6e 74 65  presents a conte
0270: 78 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  xt from the SQLi
0280: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
0290: 74 68 61 74 20 63 61 6e 0d 0a 20 20 20 20 2f 2f  that can..    //
02a0: 2f 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 74  / be passed to t
02b0: 68 65 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  he sqlite3_resul
02c0: 74 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69  t_*() and associ
02d0: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  ated functions..
02e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
02f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
0310: 69 74 65 43 6f 6e 74 65 78 74 20 3a 20 49 53 51  iteContext : ISQ
0320: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0330: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0340: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0350: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
0360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0370: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
0380: 74 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e  tive context han
0390: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
03a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
03b0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
03c0: 74 50 74 72 20 70 43 6f 6e 74 65 78 74 3b 0d 0a  tPtr pContext;..
03d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
03e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
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 2f 2f 2f 2f 2f 2f 2f  ////////////////
0410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0430: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0440: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0450: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
0460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
0470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0480: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
04c0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
04d0: 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e 0d 0a  ontext handle...
04e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
04f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0500: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0510: 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
0520: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
0530: 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e 64  ive context hand
0540: 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  le to use...    
0550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0560: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
0570: 61 6c 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74  al SQLiteContext
0580: 28 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74  (IntPtr pContext
0590: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
05a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
05b0: 43 6f 6e 74 65 78 74 20 3d 20 70 43 6f 6e 74 65  Context = pConte
05c0: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  xt;..        }..
05d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
05e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
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 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0640: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
0650: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
0660: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
0670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0680: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
0690: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
06a0: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
06b0: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
06c0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
06d0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
06e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
06f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0700: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0710: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
0720: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
0730: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
0740: 7b 20 72 65 74 75 72 6e 20 70 43 6f 6e 74 65 78  { return pContex
0750: 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t; }..        }.
0760: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
0770: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
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 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
07d0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
07e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
07f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0810: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0820: 73 75 6c 74 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20  sult to NULL... 
0830: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
0850: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 4e 75  ublic void SetNu
0860: 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ll()..        {.
0870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
0880: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
0890: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
08a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
08b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
08c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
08d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
08e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
08f0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
0900: 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f 6e 74 65 78  ult_null(pContex
0910: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
0920: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
09a0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
09b0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
09c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
09d0: 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
09e0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
09f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0a00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0a20: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0a30: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0a40: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
0a50: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
0a60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
0a70: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0a80: 76 6f 69 64 20 53 65 74 44 6f 75 62 6c 65 28 64  void SetDouble(d
0a90: 6f 75 62 6c 65 20 76 61 6c 75 65 29 0d 0a 20 20  ouble value)..  
0aa0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ab0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
0ac0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
0ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
0ae0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
0af0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
0b00: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
0b10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0b20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
0b30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
0b40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
0b50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
0b60: 6c 65 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  le(pContext, val
0b70: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
0b80: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
0b90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
0ba0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
0bb0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
0bc0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e  ble_interop(pCon
0bd0: 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29  text, ref value)
0be0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
0bf0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0c00: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
0c10: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
0c20: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
0c30: 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
0c90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ca0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
0cb0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
0cc0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0cd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0ce0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
0cf0: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
0d00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
0d20: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
0d30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
0d40: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
0d50: 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
0d60: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0d70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
0d90: 64 20 53 65 74 49 6e 74 28 69 6e 74 20 76 61 6c  d SetInt(int val
0da0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
0dd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
0de0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0df0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
0e00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
0e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0e20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
0e30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
0e40: 6c 74 5f 69 6e 74 28 70 43 6f 6e 74 65 78 74 2c  lt_int(pContext,
0e50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0e60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0ec0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0ee0: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0ef0: 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63  sult to the spec
0f00: 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
0f10: 22 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20  "Int64" />..    
0f20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
0f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0f50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0f60: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0f70: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0f80: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
0f90: 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
0fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0fb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
0fc0: 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74 36 34  ic void SetInt64
0fd0: 28 6c 6f 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  (long value)..  
0fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ff0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
1000: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1020: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1030: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1040: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
1050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1070: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1080: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1090: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
10a0: 34 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75  4(pContext, valu
10b0: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
10c0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
10d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
10e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
10f0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1100: 34 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65  4_interop(pConte
1110: 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  xt, ref value);.
1120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1130: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
1140: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1150: 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
1160: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1170: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11e0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
11f0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1200: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1210: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1220: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
1230: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1260: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1280: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
1290: 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65 20 74  ring" /> value t
12a0: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 76 61 6c  o use.  This val
12b0: 75 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ue will be..    
12c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65      /// converte
12d0: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
12e0: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
12f0: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
1300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1310: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1320: 69 63 20 76 6f 69 64 20 53 65 74 53 74 72 69 6e  ic void SetStrin
1330: 67 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  g(string value).
1340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1350: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1360: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1370: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
13a0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
13c0: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
13d0: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
13e0: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
13f0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1400: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1410: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1420: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1430: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1440: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
1450: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
1460: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1470: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1480: 65 73 75 6c 74 5f 74 65 78 74 28 0d 0a 20 20 20  esult_text(..   
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
14a0: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
14b0: 74 65 73 2e 4c 65 6e 67 74 68 2c 20 28 49 6e 74  tes.Length, (Int
14c0: 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20 20 20  Ptr)(-1));..    
14d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14e0: 20 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 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1550: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1560: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
1570: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
1580: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d 0a 20  f="String" />.. 
1590: 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
15a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 65   containing an e
15b0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
15c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15f0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1600: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1610: 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76  ef="String" /> v
1620: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1630: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
1640: 65 20 74 65 78 74 2e 0d 0a 20 20 20 20 20 20 20  e text...       
1650: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
1660: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
1670: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
1680: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
1690: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20   being..        
16a0: 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
16b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16d0: 76 6f 69 64 20 53 65 74 45 72 72 6f 72 28 73 74  void SetError(st
16e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
16f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1700: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1710: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1730: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1740: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1750: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1760: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1770: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1780: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1790: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
17a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
17c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
17e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
17f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1800: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1810: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1820: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1830: 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  t_error(..      
1840: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
1850: 78 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73  xt, bytes, bytes
1860: 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20  .Length);..     
1870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
18f0: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1900: 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65  esult to the spe
1910: 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1920: 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
1930: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
1940: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
1950: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1960: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1970: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1980: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1990: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22  SQLiteErrorCode"
19b0: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65   /> value to use
19c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19e0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
19f0: 45 72 72 6f 72 43 6f 64 65 28 53 51 4c 69 74 65  ErrorCode(SQLite
1a00: 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1a30: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
1a40: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a50: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1a60: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1a70: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1a90: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1aa0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1ab0: 65 72 72 6f 72 5f 63 6f 64 65 28 70 43 6f 6e 74  error_code(pCont
1ac0: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae0: 20 20 20 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 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b50: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1b60: 74 20 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74  t result to cont
1b70: 61 69 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  ain the error co
1b80: 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47  de SQLITE_TOOBIG
1b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bb0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
1bc0: 65 74 45 72 72 6f 72 54 6f 6f 42 69 67 28 29 0d  etErrorTooBig().
1bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1be0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1bf0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1c00: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1c10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1c20: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1c30: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
1c50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c60: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c70: 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70 43 6f 6e  rror_toobig(pCon
1c80: 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  text);..        
1c90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1d10: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1d20: 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  lt to contain th
1d30: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c  e error code SQL
1d40: 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20  ITE_NOMEM...    
1d50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
1d70: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
1d80: 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20  NoMemory()..    
1d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da0: 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20     if (pContext 
1db0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1de0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1df0: 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1e00: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1e10: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1e20: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e30: 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78 74 29 3b  nomem(pContext);
1e40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e50: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ec0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1ed0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1ef0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
1f00: 3e 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20  > array..       
1f10: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1f50: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1f60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
1f80: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
1f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1fa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
1fb0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c 6f  blic void SetBlo
1fc0: 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 0d  b(byte[] value).
1fd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1ff0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
2000: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2010: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2020: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2030: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
2040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2050: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2070: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2080: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2090: 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20  "value");....   
20a0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
20b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
20c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
20d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20e0: 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c     pContext, val
20f0: 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  ue, value.Length
2100: 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b  , (IntPtr)(-1));
2110: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2120: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2180: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2190: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
21a0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
21b0: 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73 20  a BLOB of zeros 
21c0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
21d0: 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
21e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2200: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
2210: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2220: 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72 6f  e number of zero
2230: 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66 6f   bytes to use fo
2240: 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74 65  r the BLOB conte
2250: 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  xt result...    
2260: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2270: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2280: 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c 6f   void SetZeroBlo
2290: 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  b(int value)..  
22a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22b0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
22c0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
22d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22e0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
22f0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2300: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
2310: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2320: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2330: 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
2340: 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20 76  blob(pContext, v
2350: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2360: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23d0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
23e0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
23f0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
2400: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
2410: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e 0d  QLiteValue" />..
2420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2440: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2450: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2470: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2480: 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a 20  e" /> to use... 
2490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
24b0: 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75  lic void SetValu
24c0: 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61  e(SQLiteValue va
24d0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
24e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24f0: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
2500: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2510: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2520: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2530: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
2540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2550: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
2560: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2570: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
2580: 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
2590: 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
25a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
25b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
25c0: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
25d0: 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  _value(..       
25e0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
25f0: 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65 48  t, value.NativeH
2600: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2610: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2620: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2630: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2640: 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26a0: 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c 70  SQLiteValue Help
26b0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
26c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
26e0: 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 61 6c  represents a val
26f0: 75 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ue from the SQLi
2700: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2710: 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20  that can be..   
2720: 20 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74   /// passed to t
2730: 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  he sqlite3_value
2740: 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69 61  _*() and associa
2750: 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  ted functions...
2760: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2770: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2780: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2790: 74 65 56 61 6c 75 65 20 3a 20 49 53 51 4c 69 74  teValue : ISQLit
27a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20  eNativeHandle.. 
27b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27c0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
27d0: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
27e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2800: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d  e value handle..
2810: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2820: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2830: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2840: 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  pValue;..       
2850: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2860: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28c0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
28d0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
28e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28f0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2900: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2910: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
2920: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2930: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
2940: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 68 61      /// value ha
2950: 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndle...        /
2960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2980: 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
2990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29a0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
29b0: 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20  andle to use... 
29c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
29e0: 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
29f0: 28 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 0d  (IntPtr pValue).
2a00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 56 61          this.pVa
2a20: 6c 75 65 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20  lue = pValue;.. 
2a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a50: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2ab0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2ac0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2ad0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae0: 20 20 20 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74     /// Invalidat
2af0: 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  es the native va
2b00: 6c 75 65 20 68 61 6e 64 6c 65 2c 20 74 68 65 72  lue handle, ther
2b10: 65 62 79 20 70 72 65 76 65 6e 74 69 6e 67 20 66  eby preventing f
2b20: 75 72 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  urther..        
2b30: 2f 2f 2f 20 61 63 63 65 73 73 20 74 6f 20 69 74  /// access to it
2b40: 20 66 72 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63   from this objec
2b50: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b80: 76 61 74 65 20 76 6f 69 64 20 50 72 65 76 65 6e  vate void Preven
2b90: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 0d  tNativeAccess().
2ba0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2bb0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 20 3d          pValue =
2bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2be0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2bf0: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c50: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
2c60: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
2c70: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c90: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2ca0: 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  a logical array 
2cb0: 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  of native pointe
2cc0: 72 73 20 74 6f 20 6e 61 74 69 76 65 20 73 71 6c  rs to native sql
2cd0: 69 74 65 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20  ite3_value..    
2ce0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
2cf0: 65 73 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  es into a manage
2d00: 64 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  d array of <see 
2d10: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2d20: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
2d30: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
2d40: 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ces...        //
2d50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2d60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2d70: 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
2d80: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2d90: 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74  umber of element
2da0: 73 20 69 6e 20 74 68 65 20 6c 6f 67 69 63 61 6c  s in the logical
2db0: 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65   array of native
2dc0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a   sqlite3_value..
2dd0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2de0: 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20  ctures...       
2df0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2e00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e10: 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
2e20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2e30: 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
2e40: 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  o the logical ar
2e50: 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 73 71  ray of native sq
2e60: 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a 20 20 20  lite3_value..   
2e70: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
2e80: 72 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  res to convert..
2e90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2ea0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2eb0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2ec0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
2ed0: 6e 61 67 65 64 20 61 72 72 61 79 20 6f 66 20 3c  naged array of <
2ee0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2ef0: 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Value" /> object
2f00: 20 69 6e 73 74 61 6e 63 65 73 20 6f 72 0d 0a 20   instances or.. 
2f10: 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20         /// null 
2f20: 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
2f30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2f40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69  urns>..        i
2f50: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53  nternal static S
2f60: 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 41 72 72  QLiteValue[] Arr
2f70: 61 79 46 72 6f 6d 53 69 7a 65 41 6e 64 49 6e 74  ayFromSizeAndInt
2f80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2f90: 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
2fa0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2fb0: 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20  argv..          
2fc0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2fd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2fe0: 61 72 67 63 20 3c 20 30 29 0d 0a 20 20 20 20 20  argc < 0)..     
2ff0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3000: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
3010: 20 20 20 20 20 20 20 69 66 20 28 61 72 67 76 20         if (argv 
3020: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
3030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3040: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
3050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
3060: 69 74 65 56 61 6c 75 65 5b 5d 20 72 65 73 75 6c  iteValue[] resul
3070: 74 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 56 61  t = new SQLiteVa
3080: 6c 75 65 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20  lue[argc];....  
3090: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
30a0: 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c 20 6f 66  nt index = 0, of
30b0: 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20  fset = 0;..     
30c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30d0: 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65  ndex < result.Le
30e0: 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20  ngth;..         
30f0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
3100: 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e  ++, offset += In
3110: 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20 20 20 20  tPtr.Size)..    
3120: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3130: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
3140: 72 20 70 41 72 67 20 3d 20 53 51 4c 69 74 65 4d  r pArg = SQLiteM
3150: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
3160: 72 28 61 72 67 76 2c 20 6f 66 66 73 65 74 29 3b  r(argv, offset);
3170: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3180: 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78      result[index
3190: 5d 20 3d 20 28 70 41 72 67 20 21 3d 20 49 6e 74  ] = (pArg != Int
31a0: 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20  Ptr.Zero) ?..   
31b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c0: 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c 75 65   new SQLiteValue
31d0: 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a  (pArg) : null;..
31e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
31f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
3200: 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
3210: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3220: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3230: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3280: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3290: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
32a0: 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ndle Members..  
32b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
32c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
32d0: 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64   Returns the und
32e0: 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e  erlying SQLite n
32f0: 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73  ative handle ass
3300: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
3310: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
3320: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
3330: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3340: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3350: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 4e   public IntPtr N
3360: 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
3370: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3380: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
3390: 20 70 56 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20   pValue; }..    
33a0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
33b0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
33c0: 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3410: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
3420: 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65  Public Propertie
3430: 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
3440: 74 65 20 62 6f 6f 6c 20 70 65 72 73 69 73 74 65  te bool persiste
3450: 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
3460: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3470: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e     /// Returns n
3480: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e  on-zero if the n
3490: 61 74 69 76 65 20 53 51 4c 69 74 65 20 76 61 6c  ative SQLite val
34a0: 75 65 20 68 61 73 20 62 65 65 6e 20 73 75 63 63  ue has been succ
34b0: 65 73 73 66 75 6c 6c 79 0d 0a 20 20 20 20 20 20  essfully..      
34c0: 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 65 64 20    /// persisted 
34d0: 61 73 20 61 20 6d 61 6e 61 67 65 64 20 76 61 6c  as a managed val
34e0: 75 65 20 77 69 74 68 69 6e 20 74 68 69 73 20 6f  ue within this o
34f0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 28  bject instance (
3500: 69 2e 65 2e 20 74 68 65 0d 0a 20 20 20 20 20 20  i.e. the..      
3510: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
3520: 22 56 61 6c 75 65 22 20 2f 3e 20 70 72 6f 70 65  "Value" /> prope
3530: 72 74 79 20 6d 61 79 20 74 68 65 6e 20 62 65 20  rty may then be 
3540: 72 65 61 64 20 73 75 63 63 65 73 73 66 75 6c 6c  read successfull
3550: 79 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y)...        ///
3560: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3570: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
3580: 20 50 65 72 73 69 73 74 65 64 0d 0a 20 20 20 20   Persisted..    
3590: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35a0: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
35b0: 70 65 72 73 69 73 74 65 64 3b 20 7d 0d 0a 20 20  persisted; }..  
35c0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35d0: 20 20 20 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 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3620: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6f 62        private ob
3630: 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
3640: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3650: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3660: 49 66 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76  If the managed v
3670: 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20 6f 62  alue for this ob
3680: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73  ject instance is
3690: 20 61 76 61 69 6c 61 62 6c 65 20 28 69 2e 65 2e   available (i.e.
36a0: 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   it..        ///
36b0: 20 68 61 73 20 62 65 65 6e 20 70 72 65 76 69 6f   has been previo
36c0: 75 73 6c 79 20 70 65 72 73 69 73 74 65 64 20 76  usly persisted v
36d0: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
36e0: 3d 22 50 65 72 73 69 73 74 22 20 2f 3e 29 20 6d  ="Persist" />) m
36f0: 65 74 68 6f 64 2c 0d 0a 20 20 20 20 20 20 20 20  ethod,..        
3700: 2f 2f 2f 20 74 68 61 74 20 76 61 6c 75 65 20 69  /// that value i
3710: 73 20 72 65 74 75 72 6e 65 64 3b 20 6f 74 68 65  s returned; othe
3720: 72 77 69 73 65 2c 20 61 6e 20 65 78 63 65 70 74  rwise, an except
3730: 69 6f 6e 20 69 73 20 74 68 72 6f 77 6e 2e 20 20  ion is thrown.  
3740: 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  The..        ///
3750: 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20   returned value 
3760: 6d 61 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  may be null...  
3770: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3780: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3790: 62 6c 69 63 20 6f 62 6a 65 63 74 20 56 61 6c 75  blic object Valu
37a0: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
37b0: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
37c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
37e0: 20 28 21 70 65 72 73 69 73 74 65 64 29 0d 0a 20   (!persisted).. 
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
3800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3810: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
3820: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
3830: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
3840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3850: 20 20 20 20 22 76 61 6c 75 65 20 77 61 73 20 6e      "value was n
3860: 6f 74 20 70 65 72 73 69 73 74 65 64 22 29 3b 0d  ot persisted");.
3870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3880: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3890: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
38a0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
38b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
38c0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
38d0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3930: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
3940: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
3950: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3960: 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
3970: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
3980: 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 61 73  type affinity as
3990: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
39a0: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
39b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
39c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
39d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
39e0: 20 20 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61    /// The type a
39f0: 66 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74  ffinity associat
3a00: 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c  ed with this val
3a10: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
3a20: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3a30: 20 20 20 20 20 70 75 62 6c 69 63 20 54 79 70 65       public Type
3a40: 41 66 66 69 6e 69 74 79 20 47 65 74 54 79 70 65  Affinity GetType
3a50: 41 66 66 69 6e 69 74 79 28 29 0d 0a 20 20 20 20  Affinity()..    
3a60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3a70: 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
3a80: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65   IntPtr.Zero) re
3a90: 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  turn TypeAffinit
3aa0: 79 2e 4e 6f 6e 65 3b 0d 0a 20 20 20 20 20 20 20  y.None;..       
3ab0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
3ac0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
3ad0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
3ae0: 70 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  pe(pValue);..   
3af0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3b00: 20 20 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 2f 2f 2f  ////////////////
3b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3b50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3b60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3b70: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
3b80: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
3b90: 79 74 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ytes associated 
3ba0: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2c  with this value,
3bb0: 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   if..        ///
3bc0: 20 69 74 20 72 65 66 65 72 73 20 74 6f 20 61 20   it refers to a 
3bd0: 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74  UTF-8 encoded st
3be0: 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ring...        /
3bf0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3c00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
3c10: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
3c20: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
3c30: 62 79 74 65 73 20 61 73 73 6f 63 69 61 74 65 64  bytes associated
3c40: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
3c50: 2e 20 20 54 68 65 20 72 65 74 75 72 6e 65 64 20  .  The returned 
3c60: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f  value..        /
3c70: 2f 2f 20 6d 61 79 20 62 65 20 7a 65 72 6f 2e 0d  // may be zero..
3c80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
3c90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
3ca0: 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74 42   public int GetB
3cb0: 79 74 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20  ytes()..        
3cc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
3cd0: 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
3ce0: 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e  Ptr.Zero) return
3cf0: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
3d00: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
3d10: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
3d20: 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28  te3_value_bytes(
3d30: 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  pValue);..      
3d40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
3d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d90: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3da0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3db0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74  .        /// Get
3dc0: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
3dd0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
3de0: 33 32 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65  32" /> associate
3df0: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
3e00: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
3e10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3e20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3e30: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
3e40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
3e50: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
3e60: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
3e70: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
3e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3e90: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3ea0: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74    public int Get
3eb0: 49 6e 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  Int()..        {
3ec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
3ed0: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
3ee0: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
3ef0: 64 65 66 61 75 6c 74 28 69 6e 74 29 3b 0d 0a 20  default(int);.. 
3f00: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3f10: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
3f20: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
3f30: 6c 75 65 5f 69 6e 74 28 70 56 61 6c 75 65 29 3b  lue_int(pValue);
3f40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
3f50: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3fa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
3fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3fc0: 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65   /// Gets and re
3fd0: 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63  turns the <see c
3fe0: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 61  ref="Int64" /> a
3ff0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
4000: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
4010: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
4020: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4030: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
4040: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
4050: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
4060: 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 61 73 73  f="Int64" /> ass
4070: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
4080: 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  s value...      
4090: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
40a0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
40b0: 20 6c 6f 6e 67 20 47 65 74 49 6e 74 36 34 28 29   long GetInt64()
40c0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
40d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
40e0: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
40f0: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4100: 6c 74 28 6c 6f 6e 67 29 3b 0d 0a 0d 0a 23 69 66  lt(long);....#if
4110: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4120: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4130: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4140: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
4150: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75  ods.sqlite3_valu
4160: 65 5f 69 6e 74 36 34 28 70 56 61 6c 75 65 29 3b  e_int64(pValue);
4170: 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f  ..#elif !SQLITE_
4180: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
4190: 20 20 20 20 20 20 6c 6f 6e 67 20 76 61 6c 75 65        long value
41a0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
41b0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
41c0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
41d0: 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72  alue_int64_inter
41e0: 6f 70 28 70 56 61 6c 75 65 2c 20 72 65 66 20 76  op(pValue, ref v
41f0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
4200: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
4210: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
4220: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
4230: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
4240: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
4250: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
4260: 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
42c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
42d0: 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20     /// Gets and 
42e0: 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65  returns the <see
42f0: 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
4300: 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  > associated wit
4310: 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
4320: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
4330: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4340: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4350: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4360: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4370: 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
4380: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4390: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
43a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
43b0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
43c0: 62 6c 69 63 20 64 6f 75 62 6c 65 20 47 65 74 44  blic double GetD
43d0: 6f 75 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  ouble()..       
43e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
43f0: 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e  if (pValue == In
4400: 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72  tPtr.Zero) retur
4410: 6e 20 64 65 66 61 75 6c 74 28 64 6f 75 62 6c 65  n default(double
4420: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4430: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4440: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4450: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4460: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4470: 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
4480: 65 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69  e(pValue);..#eli
4490: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
44a0: 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
44b0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 20 3d 20 30  double value = 0
44c0: 2e 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .0;..           
44d0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
44e0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
44f0: 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
4500: 70 28 70 56 61 6c 75 65 2c 20 72 65 66 20 76 61  p(pValue, ref va
4510: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
4520: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
4530: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
4540: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
4550: 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63  otImplementedExc
4560: 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69  eption();..#endi
4570: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
4580: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
45d0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
45e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
45f0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
4600: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
4610: 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e  cref="String" />
4620: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4630: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
4640: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
4650: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4660: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
4670: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4680: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
4690: 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20  ref="String" /> 
46a0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
46b0: 74 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65  this value.  The
46c0: 20 76 61 6c 75 65 20 69 73 0d 0a 20 20 20 20 20   value is..     
46d0: 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65 64     /// converted
46e0: 20 66 72 6f 6d 20 74 68 65 20 55 54 46 2d 38 20   from the UTF-8 
46f0: 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74  encoding prior t
4700: 6f 20 62 65 69 6e 67 20 72 65 74 75 72 6e 65 64  o being returned
4710: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4720: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4730: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
4740: 20 47 65 74 53 74 72 69 6e 67 28 29 0d 0a 20 20   GetString()..  
4750: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4760: 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
4770: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  == IntPtr.Zero) 
4780: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
4790: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
47a0: 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  length;..       
47b0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 53 74 72       IntPtr pStr
47c0: 69 6e 67 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ing;....#if SQLI
47d0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47e0: 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20           length 
47f0: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
4800: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4810: 6c 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65  lue_bytes(pValue
4820: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4830: 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61 66 65  pString = Unsafe
4840: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
4850: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
4860: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65  (pValue);..#else
4870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ..            le
4880: 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ngth = 0;....   
4890: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
48a0: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
48b0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
48c0: 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f  alue_text_intero
48d0: 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p(..            
48e0: 20 20 20 20 70 56 61 6c 75 65 2c 20 72 65 66 20      pValue, ref 
48f0: 6c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64 69 66  length);..#endif
4900: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4910: 72 65 74 75 72 6e 20 53 51 4c 69 74 65 53 74 72  return SQLiteStr
4920: 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing.StringFromUt
4930: 66 38 49 6e 74 50 74 72 28 70 53 74 72 69 6e 67  f8IntPtr(pString
4940: 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20  , length);..    
4950: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4960: 20 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 2f 2f 2f 2f  ////////////////
4980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
49b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
49c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
49d0: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
49e0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 42  the <see cref="B
49f0: 79 74 65 22 20 2f 3e 20 61 72 72 61 79 20 61 73  yte" /> array as
4a00: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4a10: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
4a20: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
4a30: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4a40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
4a50: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
4a60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
4a70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
4a80: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4a90: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
4aa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4ab0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
4ac0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 47 65 74 42  blic byte[] GetB
4ad0: 6c 6f 62 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  lob()..        {
4ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4af0: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4b00: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4b10: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4b20: 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
4b30: 74 65 42 79 74 65 73 2e 46 72 6f 6d 49 6e 74 50  teBytes.FromIntP
4b40: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
4b50: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
4b60: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
4b70: 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 70 56 61 6c  _value_blob(pVal
4b80: 75 65 29 2c 20 47 65 74 42 79 74 65 73 28 29 29  ue), GetBytes())
4b90: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4ba0: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4bf0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4c00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4c10: 20 20 2f 2f 2f 20 55 73 65 73 20 74 68 65 20 6e    /// Uses the n
4c20: 61 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64  ative value hand
4c30: 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61 6e 64  le to obtain and
4c40: 20 73 74 6f 72 65 20 74 68 65 20 6d 61 6e 61 67   store the manag
4c50: 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ed value..      
4c60: 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69 73 20 6f    /// for this o
4c70: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2c 20  bject instance, 
4c80: 74 68 75 73 20 73 61 76 69 6e 67 20 69 74 20 66  thus saving it f
4c90: 6f 72 20 6c 61 74 65 72 20 75 73 65 2e 20 20 54  or later use.  T
4ca0: 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20 20 20  he type..       
4cb0: 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d 61 6e 61   /// of the mana
4cc0: 67 65 64 20 76 61 6c 75 65 20 69 73 20 64 65 74  ged value is det
4cd0: 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 74  ermined by the t
4ce0: 79 70 65 20 61 66 66 69 6e 69 74 79 20 6f 66 20  ype affinity of 
4cf0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
4d00: 20 6e 61 74 69 76 65 20 76 61 6c 75 65 2e 20 20   native value.  
4d10: 49 66 20 74 68 65 20 74 79 70 65 20 61 66 66 69  If the type affi
4d20: 6e 69 74 79 20 69 73 20 6e 6f 74 20 72 65 63 6f  nity is not reco
4d30: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a  gnized by this..
4d40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
4d50: 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69 73 20 64  od, no work is d
4d60: 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65 20 69 73  one and false is
4d70: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4d80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4d90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4da0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4db0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
4dc0: 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  if the native va
4dd0: 6c 75 65 20 77 61 73 20 70 65 72 73 69 73 74 65  lue was persiste
4de0: 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 0d  d successfully..
4df0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
4e00: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4e10: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72   public bool Per
4e20: 73 69 73 74 28 29 0d 0a 20 20 20 20 20 20 20 20  sist()..        
4e30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  {..            s
4e40: 77 69 74 63 68 20 28 47 65 74 54 79 70 65 41 66  witch (GetTypeAf
4e50: 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20 20 20  finity())..     
4e60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4e70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
4e80: 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e 69 6e  ypeAffinity.Unin
4e90: 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20 20 20  itialized:..    
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4ec0: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
4ed0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41    PreventNativeA
4f00: 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20  ccess();..      
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73    return (persis
4f30: 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20  ted = true);..  
4f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
4f60: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66       case TypeAf
4f70: 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20  finity.Int64:.. 
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
4fb0: 6c 75 65 20 3d 20 47 65 74 49 6e 74 36 34 28 29  lue = GetInt64()
4fc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
4fd0: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
4fe0: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
4ff0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5000: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5010: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
5020: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
5030: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
5050: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
5060: 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20 20 20  Double:..       
5070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
50a0: 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d 0a 20 20  GetDouble();..  
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50c0: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
50d0: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
5100: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
5110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5120: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5130: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
5140: 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74 3a  peAffinity.Text:
5150: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5160: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5180: 20 76 61 6c 75 65 20 3d 20 47 65 74 53 74 72 69   value = GetStri
5190: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
51b0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
51c0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
51e0: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
51f0: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5220: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5230: 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20  ity.Blob:..     
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5260: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5270: 3d 20 47 65 74 42 79 74 65 73 28 29 3b 0d 0a 20  = GetBytes();.. 
5280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5290: 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61         PreventNa
52a0: 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20  tiveAccess();.. 
52b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70         return (p
52d0: 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29  ersisted = true)
52e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
52f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5300: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
5310: 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c  ypeAffinity.Null
5320: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5330: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 76 61 6c 75 65 20 3d 20 44 42 4e 75 6c 6c    value = DBNull
5360: 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  .Value;..       
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
5390: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
53a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53b0: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
53c0: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
53d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
53f0: 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20      default:..  
5400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5410: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5420: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5430: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
5460: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
5470: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5480: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
5490: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
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 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
54f0: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
5500: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
5510: 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20   Enumeration..  
5520: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5530: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61  .    /// These a
5540: 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76  re the allowed v
5550: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 6f 70  alues for the op
5560: 65 72 61 74 6f 72 73 20 74 68 61 74 20 61 72 65  erators that are
5570: 20 70 61 72 74 20 6f 66 20 61 0d 0a 20 20 20 20   part of a..    
5580: 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 20 74  /// constraint t
5590: 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45 52 45  erm in the WHERE
55a0: 20 63 6c 61 75 73 65 20 6f 66 20 61 20 71 75 65   clause of a que
55b0: 72 79 20 74 68 61 74 20 75 73 65 73 20 61 20 76  ry that uses a v
55c0: 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20  irtual..    /// 
55d0: 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  table...    /// 
55e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
55f0: 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
5600: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
5610: 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20 20 20 20  tOp : byte..    
5620: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
5630: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5640: 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
5650: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
5660: 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61 74 6f  equality operato
5670: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
5680: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5690: 20 20 20 20 45 71 75 61 6c 54 6f 20 3d 20 32 2c      EqualTo = 2,
56a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
56b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
56c0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75     /// This valu
56d0: 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  e represents the
56e0: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 70   greater than op
56f0: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
5700: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5710: 0a 20 20 20 20 20 20 20 20 47 72 65 61 74 65 72  .        Greater
5720: 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  Than = 4,....   
5730: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5740: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5750: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
5760: 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73 20 74  sents the less t
5770: 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20  han or equal to 
5780: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5790: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
57a0: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54  >..        LessT
57b0: 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d 20 38  hanOrEqualTo = 8
57c0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
57d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
57e0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
57f0: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
5800: 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 70 65 72  e less than oper
5810: 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ator...        /
5820: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5830: 20 20 20 20 20 20 20 4c 65 73 73 54 68 61 6e 20         LessThan 
5840: 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  = 16,....       
5850: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5860: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
5870: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
5880: 73 20 74 68 65 20 67 72 65 61 74 65 72 20 74 68  s the greater th
5890: 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 6f  an or equal to o
58a0: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
58b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
58c0: 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61 74 65  ..        Greate
58d0: 72 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d  rThanOrEqualTo =
58e0: 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   32,....        
58f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5900: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
5910: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
5920: 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61   the MATCH opera
5930: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5940: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5950: 20 20 20 20 20 20 4d 61 74 63 68 20 3d 20 36 34        Match = 64
5960: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
5970: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5980: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
5990: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
59a0: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 2e  e LIKE operator.
59b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
59c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
59d0: 20 20 4c 69 6b 65 20 3d 20 36 35 2c 0d 0a 0d 0a    Like = 65,....
59e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
59f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
5a00: 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65  // This value re
5a10: 70 72 65 73 65 6e 74 73 20 74 68 65 20 47 4c 4f  presents the GLO
5a20: 42 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  B operator...   
5a30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5a40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 6c 6f  ry>..        Glo
5a50: 62 20 3d 20 36 36 2c 0d 0a 0d 0a 20 20 20 20 20  b = 66,....     
5a60: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5a70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5a80: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
5a90: 6e 74 73 20 74 68 65 20 52 45 47 45 58 50 20 6f  nts the REGEXP o
5aa0: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
5ab0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5ac0: 0d 0a 20 20 20 20 20 20 20 20 52 65 67 65 78 70  ..        Regexp
5ad0: 20 3d 20 36 37 0d 0a 20 20 20 20 7d 0d 0a 20 20   = 67..    }..  
5ae0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
5af0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
5b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5b40: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
5b50: 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20  QLiteIndexFlags 
5b60: 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20 20  Enumeration..   
5b70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5b80: 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72      /// These ar
5b90: 65 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76 61  e the allowed va
5ba0: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 69 6e 64  lues for the ind
5bb0: 65 78 20 66 6c 61 67 73 20 66 72 6f 6d 20 74 68  ex flags from th
5bc0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  e..    /// <see 
5bd0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
5be0: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
5bf0: 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
5c00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
5c10: 61 72 79 3e 0d 0a 20 20 20 20 5b 46 6c 61 67 73  ary>..    [Flags
5c20: 28 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ()]..    public 
5c30: 65 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64 65 78  enum SQLiteIndex
5c40: 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  Flags..    {..  
5c50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5c60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5c70: 20 4e 6f 20 73 70 65 63 69 61 6c 20 68 61 6e 64   No special hand
5c80: 6c 69 6e 67 2e 20 20 54 68 69 73 20 69 73 20 74  ling.  This is t
5c90: 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20  he default...   
5ca0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5cb0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e 6f 6e  ry>..        Non
5cc0: 65 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20 20  e = 0x0,....    
5cd0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5cf0: 68 69 73 20 76 61 6c 75 65 20 69 6e 64 69 63 61  his value indica
5d00: 74 65 73 20 74 68 61 74 20 74 68 65 20 73 63 61  tes that the sca
5d10: 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78 20 77  n of the index w
5d20: 69 6c 6c 20 76 69 73 69 74 20 61 74 0d 0a 20 20  ill visit at..  
5d30: 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 73 74 20 6f        /// most o
5d40: 6e 65 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20  ne row...       
5d50: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5d60: 0a 20 20 20 20 20 20 20 20 53 63 61 6e 55 6e 69  .        ScanUni
5d70: 71 75 65 20 3d 20 30 78 31 0d 0a 20 20 20 20 7d  que = 0x1..    }
5d80: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
5d90: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5de0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
5df0: 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  on SQLiteIndexCo
5e00: 6e 73 74 72 61 69 6e 74 20 48 65 6c 70 65 72 20  nstraint Helper 
5e10: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
5e20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5e30: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
5e40: 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69  resents the nati
5e50: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
5e60: 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75  _constraint stru
5e70: 63 74 75 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 66  cture..    /// f
5e80: 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63  rom the SQLite c
5e90: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
5ea0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5eb0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61  ..    public sea
5ec0: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
5ed0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 0d  IndexConstraint.
5ee0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
5ef0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
5f00: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
5f10: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
5f20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5f30: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
5f40: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
5f50: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
5f60: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
5f70: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
5f80: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
5f90: 73 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72  straint structur
5fa0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
5fb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5fc0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5fd0: 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74 22  ame="constraint"
5fe0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5ff0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
6000: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
6010: 6e 74 20 73 74 72 75 63 74 75 72 65 20 74 6f 20  nt structure to 
6020: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
6030: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6040: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
6050: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
6060: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
6070: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
6080: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
6090: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ex_constraint co
60a0: 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20  nstraint..      
60b0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
60c0: 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f 6e 73       : this(cons
60d0: 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 2c 20  traint.iColumn, 
60e0: 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 2c 20 63  constraint.op, c
60f0: 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65  onstraint.usable
6100: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6110: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
6120: 2e 69 54 65 72 6d 4f 66 66 73 65 74 29 0d 0a 20  .iTermOffset).. 
6130: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6140: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
6150: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ing...        }.
6160: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
6170: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
6180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
61d0: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
61e0: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
61f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6200: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6210: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
6220: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
6230: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
6240: 20 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64   specified field
6250: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
6260: 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lues...        /
6270: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6280: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
6290: 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22  m name="iColumn"
62a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
62b0: 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61  olumn on left-ha
62c0: 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74  nd side of const
62d0: 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  raint...        
62e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
62f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6300: 20 6e 61 6d 65 3d 22 6f 70 22 3e 0d 0a 20 20 20   name="op">..   
6310: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61       /// Constra
6320: 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73  int operator (<s
6330: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
6340: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
6350: 22 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20  " />)...        
6360: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6370: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6380: 20 6e 61 6d 65 3d 22 75 73 61 62 6c 65 22 3e 0d   name="usable">.
6390: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75  .        /// Tru
63a0: 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72  e if this constr
63b0: 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e 0d  aint is usable..
63c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
63d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
63e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
63f0: 69 54 65 72 6d 4f 66 66 73 65 74 22 3e 0d 0a 20  iTermOffset">.. 
6400: 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 64 20         /// Used 
6410: 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65  internally - <se
6420: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
6430: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
6440: 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20  tIndex" />..    
6450: 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69      /// should i
6460: 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  gnore...        
6470: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6480: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
6490: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
64a0: 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
64b0: 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a    int iColumn,..
64c0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
64d0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
64e0: 74 4f 70 20 6f 70 2c 0d 0a 20 20 20 20 20 20 20  tOp op,..       
64f0: 20 20 20 20 20 62 79 74 65 20 75 73 61 62 6c 65       byte usable
6500: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
6510: 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 0d 0a  nt iTermOffset..
6520: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
6530: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6540: 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f 6c 75        this.iColu
6550: 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  mn = iColumn;.. 
6560: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
6570: 6f 70 20 3d 20 6f 70 3b 0d 0a 20 20 20 20 20 20  op = op;..      
6580: 20 20 20 20 20 20 74 68 69 73 2e 75 73 61 62 6c        this.usabl
6590: 65 20 3d 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  e = usable;..   
65a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 54           this.iT
65b0: 65 72 6d 4f 66 66 73 65 74 20 3d 20 69 54 65 72  ermOffset = iTer
65c0: 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20  mOffset;..      
65d0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
65e0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
65f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6640: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
6650: 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20 20  lic Fields..    
6660: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6670: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
6680: 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61  olumn on left-ha
6690: 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74  nd side of const
66a0: 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  raint...        
66b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
66c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
66d0: 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20  nt iColumn;.... 
66e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
66f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d  /////////////...
6730: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6740: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6750: 2f 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f  /// Constraint o
6760: 70 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72  perator (<see cr
6770: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
6780: 6f 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29  onstraintOp" />)
6790: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
67a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
67b0: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
67c0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f  IndexConstraintO
67d0: 70 20 6f 70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  p op;....       
67e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6820: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6830: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6840: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72  ..        /// Tr
6850: 75 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74  ue if this const
6860: 72 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e  raint is usable.
6870: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6880: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6890: 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73    public byte us
68a0: 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  able;....       
68b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
68c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6900: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6910: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 73  ..        /// Us
6920: 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20  ed internally - 
6930: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
6940: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
6950: 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20  BestIndex" />.. 
6960: 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c         /// shoul
6970: 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20  d ignore...     
6980: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6990: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
69a0: 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65  c int iTermOffse
69b0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  t;..        #end
69c0: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
69d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
69e0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
6a40: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
6a50: 42 79 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d  By Helper Class.
6a60: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
6a70: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
6a80: 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74   class represent
6a90: 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  s the native sql
6aa0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
6ab0: 62 79 20 73 74 72 75 63 74 75 72 65 20 66 72 6f  by structure fro
6ac0: 6d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 53  m..    /// the S
6ad0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
6ae0: 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
6af0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
6b00: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
6b10: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
6b20: 72 42 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rBy..    {..    
6b30: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
6b40: 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72  rnal Constructor
6b50: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
6b60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6b70: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
6b80: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
6b90: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
6ba0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
6bb0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
6bc0: 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  // sqlite3_index
6bd0: 5f 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75  _orderby structu
6be0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
6bf0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6c00: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6c10: 6e 61 6d 65 3d 22 6f 72 64 65 72 42 79 22 3e 0d  name="orderBy">.
6c20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
6c30: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
6c40: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74  index_orderby st
6c50: 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d  ructure to use..
6c60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6c70: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
6c80: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e  nternal SQLiteIn
6c90: 64 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20  dexOrderBy(..   
6ca0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
6cb0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
6cc0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
6cd0: 62 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20  by orderBy..    
6ce0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
6cf0: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 72         : this(or
6d00: 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 2c 20 6f  derBy.iColumn, o
6d10: 72 64 65 72 42 79 2e 64 65 73 63 29 0d 0a 20 20  rderBy.desc)..  
6d20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6d30: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
6d40: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
6d50: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
6d60: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6db0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6dc0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
6dd0: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
6de0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6df0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6e00: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
6e10: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
6e20: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
6e30: 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d  specified field.
6e40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
6e50: 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues...        //
6e60: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6e70: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6e80: 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e   name="iColumn">
6e90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6ea0: 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20 20  lumn number...  
6eb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6ec0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
6ed0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73  <param name="des
6ee0: 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  c">..        ///
6ef0: 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
6f00: 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d   False for ASC..
6f10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6f20: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
6f30: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
6f40: 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20 20  exOrderBy(..    
6f50: 20 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c          int iCol
6f60: 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  umn,..          
6f70: 20 20 62 79 74 65 20 64 65 73 63 0d 0a 20 20 20    byte desc..   
6f80: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
6f90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6fa0: 20 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20     this.iColumn 
6fb0: 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  = iColumn;..    
6fc0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 73          this.des
6fd0: 63 20 3d 20 64 65 73 63 3b 0d 0a 20 20 20 20 20  c = desc;..     
6fe0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
6ff0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7000: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20  //////////....  
7050: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
7060: 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20  blic Fields..   
7070: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7080: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7090: 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a  Column number...
70a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
70b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
70c0: 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
70d0: 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  mn;....        /
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
7130: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7140: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65          /// True
7150: 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73   for DESC.  Fals
7160: 65 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20  e for ASC...    
7170: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7180: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
7190: 69 63 20 62 79 74 65 20 64 65 73 63 3b 0d 0a 20  ic byte desc;.. 
71a0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
71b0: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
71c0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7220: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
7230: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
7240: 55 73 61 67 65 20 48 65 6c 70 65 72 20 43 6c 61  Usage Helper Cla
7250: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
7260: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
7270: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
7280: 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65 20  ents the native 
7290: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
72a0: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a  nstraint_usage..
72b0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
72c0: 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  e from the SQLit
72d0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
72e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
72f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
7300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
7310: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7320: 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a  ntUsage..    {..
7330: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7340: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
7350: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
7360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7370: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
7380: 75 63 74 73 20 61 20 64 65 66 61 75 6c 74 20 69  ucts a default i
7390: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
73a0: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
73b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
73c0: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
73d0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
73e0: 74 72 61 69 6e 74 55 73 61 67 65 28 29 0d 0a 20  traintUsage().. 
73f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7400: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
7410: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ing...        }.
7420: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
7480: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7490: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
74a0: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
74b0: 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  f this class usi
74c0: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
74d0: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
74e0: 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64   /// sqlite3_ind
74f0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
7500: 61 67 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  age structure...
7510: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7520: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7530: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7540: 22 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  "constraintUsage
7550: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7560: 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  The native sqlit
7570: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
7580: 69 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74  int_usage struct
7590: 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  ure to use...   
75a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
75b0: 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  >..        inter
75c0: 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43  nal SQLiteIndexC
75d0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d  onstraintUsage(.
75e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
75f0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
7600: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
7610: 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
7620: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d  constraintUsage.
7630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
7640: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
7650: 69 73 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  is(constraintUsa
7660: 67 65 2e 61 72 67 76 49 6e 64 65 78 2c 20 63 6f  ge.argvIndex, co
7670: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d  nstraintUsage.om
7680: 69 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  it)..        {..
7690: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
76a0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
76b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
76c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
76d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7720: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
7730: 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74  rivate Construct
7740: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
7750: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7760: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
7770: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
7780: 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  f this class usi
7790: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
77a0: 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20   field..        
77b0: 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  /// values...   
77c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
77d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
77e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
77f0: 67 76 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  gvIndex">..     
7800: 20 20 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65     /// If greate
7810: 72 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72  r than 0, constr
7820: 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20  aint is part of 
7830: 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e  argv to xFilter.
7840: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7850: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
7860: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7870: 22 6f 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20  "omit">..       
7880: 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65   /// Do not code
7890: 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
78a0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20   constraint...  
78b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
78c0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
78d0: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ate SQLiteIndexC
78e0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d  onstraintUsage(.
78f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
7900: 20 61 72 67 76 49 6e 64 65 78 2c 0d 0a 20 20 20   argvIndex,..   
7910: 20 20 20 20 20 20 20 20 20 62 79 74 65 20 6f 6d           byte om
7920: 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  it..            
7930: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
7940: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61            this.a
7950: 72 67 76 49 6e 64 65 78 20 3d 20 61 72 67 76 49  rgvIndex = argvI
7960: 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndex;..         
7970: 20 20 20 74 68 69 73 2e 6f 6d 69 74 20 3d 20 6f     this.omit = o
7980: 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  mit;..        }.
7990: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
79a0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7a00: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
7a10: 20 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20   Fields..       
7a20: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7a30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67          /// If g
7a40: 72 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63  reater than 0, c
7a50: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
7a60: 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
7a70: 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lter...        /
7a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7a90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
7aa0: 74 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a 0d 0a  t argvIndex;....
7ab0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7b00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7b10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7b20: 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64    /// Do not cod
7b30: 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
7b40: 73 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20  s constraint... 
7b50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7b60: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
7b70: 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b  ublic byte omit;
7b80: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7b90: 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
7ba0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7bb0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7c00: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
7c10: 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20  LiteIndexInputs 
7c20: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
7c30: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7c40: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
7c50: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74  ass represents t
7c60: 68 65 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74  he various input
7c70: 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
7c80: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
7c90: 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 74     /// library t
7ca0: 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  o the <see cref=
7cb0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
7cc0: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
7cd0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
7ce0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7cf0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
7d00: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49  ed class SQLiteI
7d10: 6e 64 65 78 49 6e 70 75 74 73 0d 0a 20 20 20 20  ndexInputs..    
7d20: 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
7d30: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73  on Internal Cons
7d40: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
7d50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7d60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
7d70: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
7d80: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
7d90: 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
7da0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7db0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7dc0: 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74  ame="nConstraint
7dd0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7de0: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73  The number of <s
7df0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
7e00: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20  ndexConstraint" 
7e10: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
7e20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
7e30: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
7e40: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
7e50: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7e60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7e70: 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d  ame="nOrderBy">.
7e80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
7e90: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
7ea0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
7eb0: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73  xOrderBy" /> ins
7ec0: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
7ed0: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
7ee0: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
7ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
7f00: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
7f10: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64  ternal SQLiteInd
7f20: 65 78 49 6e 70 75 74 73 28 69 6e 74 20 6e 43 6f  exInputs(int nCo
7f30: 6e 73 74 72 61 69 6e 74 2c 20 69 6e 74 20 6e 4f  nstraint, int nO
7f40: 72 64 65 72 42 79 29 0d 0a 20 20 20 20 20 20 20  rderBy)..       
7f50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7f60: 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 65  constraints = ne
7f70: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  w SQLiteIndexCon
7f80: 73 74 72 61 69 6e 74 5b 6e 43 6f 6e 73 74 72 61  straint[nConstra
7f90: 69 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  int];..         
7fa0: 20 20 20 6f 72 64 65 72 42 79 73 20 3d 20 6e 65     orderBys = ne
7fb0: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  w SQLiteIndexOrd
7fc0: 65 72 42 79 5b 6e 4f 72 64 65 72 42 79 5d 3b 0d  erBy[nOrderBy];.
7fd0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7fe0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7ff0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8040: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
8050: 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
8060: 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
8070: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
8080: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20  dexConstraint[] 
8090: 63 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 20 20  constraints;..  
80a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
80b0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
80c0: 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65   An array of <se
80d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
80e0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f  dexConstraint" /
80f0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
8100: 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es,..        ///
8110: 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67   each containing
8120: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70   information sup
8130: 70 6c 69 65 64 20 62 79 20 74 68 65 20 53 51 4c  plied by the SQL
8140: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
8150: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8160: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8170: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
8180: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b  IndexConstraint[
8190: 5d 20 43 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20  ] Constraints.. 
81a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
81b0: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
81c0: 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 3b 20  rn constraints; 
81d0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
81e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
81f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8230: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
8240: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  te SQLiteIndexOr
8250: 64 65 72 42 79 5b 5d 20 6f 72 64 65 72 42 79 73  derBy[] orderBys
8260: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
8270: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8280: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
8290: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
82a0: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22  iteIndexOrderBy"
82b0: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
82c0: 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f  nces,..        /
82d0: 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69  // each containi
82e0: 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  ng information s
82f0: 75 70 70 6c 69 65 64 20 62 79 20 74 68 65 20 53  upplied by the S
8300: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
8310: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
8320: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8330: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
8340: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d  teIndexOrderBy[]
8350: 20 4f 72 64 65 72 42 79 73 0d 0a 20 20 20 20 20   OrderBys..     
8360: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8370: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f    get { return o
8380: 72 64 65 72 42 79 73 3b 20 7d 0d 0a 20 20 20 20  rderBys; }..    
8390: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
83a0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
83b0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
83c0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
83d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8410: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
8420: 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  on SQLiteIndexOu
8430: 74 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61  tputs Helper Cla
8440: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
8450: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
8460: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
8470: 65 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73  ents the various
8480: 20 6f 75 74 70 75 74 73 20 70 72 6f 76 69 64 65   outputs provide
8490: 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20  d to the SQLite 
84a0: 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69  core..    /// li
84b0: 62 72 61 72 79 20 62 79 20 74 68 65 20 3c 73 65  brary by the <se
84c0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
84d0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
84e0: 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
84f0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
8500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
8510: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
8520: 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
8530: 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ts..    {..     
8540: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
8550: 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  nal Constructors
8560: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8570: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8580: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
8590: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
85a0: 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
85b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
85c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
85d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f  <param name="nCo
85e0: 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20  nstraint">..    
85f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
8600: 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  er of <see cref=
8610: 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73  "SQLiteIndexCons
8620: 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 20  traintUsage" /> 
8630: 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20  instances..     
8640: 20 20 20 2f 2f 2f 20 74 6f 20 70 72 65 2d 61 6c     /// to pre-al
8650: 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72  locate space for
8660: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8670: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
8680: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
8690: 49 6e 64 65 78 4f 75 74 70 75 74 73 28 69 6e 74  IndexOutputs(int
86a0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20   nConstraint).. 
86b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
86c0: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
86d0: 55 73 61 67 65 73 20 3d 20 6e 65 77 20 53 51 4c  Usages = new SQL
86e0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
86f0: 6e 74 55 73 61 67 65 5b 6e 43 6f 6e 73 74 72 61  ntUsage[nConstra
8700: 69 6e 74 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int];....       
8710: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8720: 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58 3a 20       // BUGFIX: 
8730: 43 72 65 61 74 65 20 74 68 65 20 5b 65 6d 70 74  Create the [empt
8740: 79 5d 20 63 6f 6e 73 74 72 61 69 6e 74 20 75 73  y] constraint us
8750: 61 67 65 73 20 6e 6f 77 20 73 6f 20 74 68 65 79  ages now so they
8760: 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 20   can be..       
8770: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
8780: 75 73 65 64 20 62 79 20 74 68 65 20 78 42 65 73  used by the xBes
8790: 74 49 6e 64 65 78 20 63 61 6c 6c 62 61 63 6b 2e  tIndex callback.
87a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
87b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
87c0: 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69  r (int iConstrai
87d0: 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61  nt = 0; iConstra
87e0: 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e  int < nConstrain
87f0: 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b  t; iConstraint++
8800: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8810: 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61     constraintUsa
8820: 67 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d  ges[iConstraint]
8830: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8840: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
8850: 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e();..        }.
8860: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
8870: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
8880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
88d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
88e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  .        /// Det
88f0: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e  ermines if the n
8900: 61 74 69 76 65 20 65 73 74 69 6d 61 74 65 64 52  ative estimatedR
8910: 6f 77 73 20 66 69 65 6c 64 20 63 61 6e 20 62 65  ows field can be
8920: 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e 0d   used, based on.
8930: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
8940: 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73 69   available versi
8950: 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  on of the SQLite
8960: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
8970: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
8980: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
8990: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
89a0: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
89b0: 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20  ero if the <see 
89c0: 63 72 65 66 3d 22 45 73 74 69 6d 61 74 65 64 52  cref="EstimatedR
89d0: 6f 77 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79  ows" /> property
89e0: 20 69 73 20 73 75 70 70 6f 72 74 65 64 0d 0a 20   is supported.. 
89f0: 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68         /// by th
8a00: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
8a10: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
8a20: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
8a30: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
8a40: 6f 6f 6c 20 43 61 6e 55 73 65 45 73 74 69 6d 61  ool CanUseEstima
8a50: 74 65 64 52 6f 77 73 28 29 0d 0a 20 20 20 20 20  tedRows()..     
8a60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8a70: 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69    if (UnsafeNati
8a80: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
8a90: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d  3_libversion_num
8aa0: 62 65 72 28 29 20 3e 3d 20 33 30 30 38 30 30 32  ber() >= 3008002
8ab0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8ac0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
8ad0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
8ae0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
8af0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8b00: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8b50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8b60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8b70: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
8b80: 68 65 20 6e 61 74 69 76 65 20 66 6c 61 67 73 20  he native flags 
8b90: 66 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65  field can be use
8ba0: 64 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d  d, based on the.
8bb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 76 61  .        /// ava
8bc0: 69 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f  ilable version o
8bd0: 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  f the SQLite cor
8be0: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
8bf0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8c00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
8c10: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
8c20: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
8c30: 69 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  if the <see cref
8c40: 3d 22 49 6e 64 65 78 46 6c 61 67 73 22 20 2f 3e  ="IndexFlags" />
8c50: 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 75 70   property is sup
8c60: 70 6f 72 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ported by..     
8c70: 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74     /// the SQLit
8c80: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
8c90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
8ca0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
8cb0: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e   public bool Can
8cc0: 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29 0d  UseIndexFlags().
8cd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8ce0: 20 20 20 20 20 20 20 20 69 66 20 28 55 6e 73 61          if (Unsa
8cf0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
8d00: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
8d10: 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33  on_number() >= 3
8d20: 30 30 39 30 30 30 29 0d 0a 20 20 20 20 20 20 20  009000)..       
8d30: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8d40: 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
8d50: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
8d60: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  e;..        }...
8d70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
8d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
8dd0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8de0: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
8df0: 73 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  s if the native 
8e00: 66 6c 61 67 73 20 66 69 65 6c 64 20 63 61 6e 20  flags field can 
8e10: 62 65 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f  be used, based o
8e20: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
8e30: 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72  // available ver
8e40: 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  sion of the SQLi
8e50: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
8e60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8e70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8e80: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
8e90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
8ea0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
8eb0: 65 20 63 72 65 66 3d 22 43 6f 6c 75 6d 6e 73 55  e cref="ColumnsU
8ec0: 73 65 64 22 20 2f 3e 20 70 72 6f 70 65 72 74 79  sed" /> property
8ed0: 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 62 79   is supported by
8ee0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
8ef0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
8f00: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
8f10: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
8f20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
8f30: 6f 6f 6c 20 43 61 6e 55 73 65 43 6f 6c 75 6d 6e  ool CanUseColumn
8f40: 73 55 73 65 64 28 29 0d 0a 20 20 20 20 20 20 20  sUsed()..       
8f50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8f60: 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65  if (UnsafeNative
8f70: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
8f80: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
8f90: 72 28 29 20 3e 3d 20 33 30 31 30 30 30 30 29 0d  r() >= 3010000).
8fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8fb0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
8fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
8fd0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
8fe0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8ff0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9030: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9040: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
9050: 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
9060: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
9070: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
9080: 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73  aintUsage[] cons
9090: 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 20  traintUsages;.. 
90a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
90b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
90c0: 2f 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73  / An array of <s
90d0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
90e0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
90f0: 61 67 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a  age" /> object..
9100: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
9110: 61 6e 63 65 73 2c 20 65 61 63 68 20 63 6f 6e 74  ances, each cont
9120: 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69  aining informati
9130: 6f 6e 20 74 6f 20 62 65 20 73 75 70 70 6c 69 65  on to be supplie
9140: 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 0d  d to the SQLite.
9150: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72  .        /// cor
9160: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
9170: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9180: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
9190: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
91a0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20  nstraintUsage[] 
91b0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  ConstraintUsages
91c0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
91d0: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
91e0: 65 74 75 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74  eturn constraint
91f0: 55 73 61 67 65 73 3b 20 7d 0d 0a 20 20 20 20 20  Usages; }..     
9200: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9250: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
9260: 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 69     private int i
9270: 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20  ndexNumber;..   
9280: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9290: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
92a0: 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68  Number used to h
92b0: 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
92c0: 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
92d0: 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
92e0: 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  l..        /// l
92f0: 61 74 65 72 20 62 65 20 70 72 6f 76 69 64 65 64  ater be provided
9300: 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65   to the <see cre
9310: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
9320: 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20  dModule.Filter" 
9330: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
9340: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
9350: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9360: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
9370: 69 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d  int IndexNumber.
9380: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9390: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
93a0: 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72  turn indexNumber
93b0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
93c0: 20 73 65 74 20 7b 20 69 6e 64 65 78 4e 75 6d 62   set { indexNumb
93d0: 65 72 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  er = value; }.. 
93e0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
93f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9440: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
9450: 74 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e  tring indexStrin
9460: 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g;..        /// 
9470: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9480: 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73     /// String us
9490: 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
94a0: 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
94b0: 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61   index.  This va
94c0: 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  lue will..      
94d0: 20 20 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70    /// later be p
94e0: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c  rovided to the <
94f0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
9500: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
9510: 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20  ilter" />..     
9520: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
9530: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
9540: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9550: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 49 6e  public string In
9560: 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20  dexString..     
9570: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9580: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69    get { return i
9590: 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20  ndexString; }.. 
95a0: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
95b0: 20 69 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 76   indexString = v
95c0: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
95d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
95e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
95f0: 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9630: 20 70 72 69 76 61 74 65 20 69 6e 74 20 6e 65 65   private int nee
9640: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
9650: 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng;..        ///
9660: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9670: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
9680: 20 69 66 20 74 68 65 20 69 6e 64 65 78 20 73 74   if the index st
9690: 72 69 6e 67 20 6d 75 73 74 20 62 65 20 66 72 65  ring must be fre
96a0: 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
96b0: 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   core..        /
96c0: 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
96d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
96e0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
96f0: 6c 69 63 20 69 6e 74 20 4e 65 65 64 54 6f 46 72  lic int NeedToFr
9700: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20  eeIndexString.. 
9710: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9720: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
9730: 72 6e 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64  rn needToFreeInd
9740: 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20  exString; }..   
9750: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
9760: 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
9770: 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ring = value; }.
9780: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9790: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
97a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
97e0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
97f0: 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73   int orderByCons
9800: 75 6d 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f  umed;..        /
9810: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9820: 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69        /// True i
9830: 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65  f output is alre
9840: 61 64 79 20 6f 72 64 65 72 65 64 2e 0d 0a 20 20  ady ordered...  
9850: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9860: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9870: 62 6c 69 63 20 69 6e 74 20 4f 72 64 65 72 42 79  blic int OrderBy
9880: 43 6f 6e 73 75 6d 65 64 0d 0a 20 20 20 20 20 20  Consumed..      
9890: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
98a0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 72   get { return or
98b0: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 7d  derByConsumed; }
98c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
98d0: 74 20 7b 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  t { orderByConsu
98e0: 6d 65 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  med = value; }..
98f0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9900: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9950: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
9960: 64 6f 75 62 6c 65 3f 20 65 73 74 69 6d 61 74 65  double? estimate
9970: 64 43 6f 73 74 3b 0d 0a 20 20 20 20 20 20 20 20  dCost;..        
9980: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9990: 20 20 20 20 20 20 20 2f 2f 2f 20 45 73 74 69 6d         /// Estim
99a0: 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69  ated cost of usi
99b0: 6e 67 20 74 68 69 73 20 69 6e 64 65 78 2e 20 20  ng this index.  
99c0: 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c  Using a null val
99d0: 75 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20  ue here..       
99e0: 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65 73 20 74   /// indicates t
99f0: 68 61 74 20 61 20 64 65 66 61 75 6c 74 20 65 73  hat a default es
9a00: 74 69 6d 61 74 65 64 20 63 6f 73 74 20 76 61 6c  timated cost val
9a10: 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  ue should be use
9a20: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
9a30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9a40: 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c      public doubl
9a50: 65 3f 20 45 73 74 69 6d 61 74 65 64 43 6f 73 74  e? EstimatedCost
9a60: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9a70: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
9a80: 65 74 75 72 6e 20 65 73 74 69 6d 61 74 65 64 43  eturn estimatedC
9a90: 6f 73 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ost; }..        
9aa0: 20 20 20 20 73 65 74 20 7b 20 65 73 74 69 6d 61      set { estima
9ab0: 74 65 64 43 6f 73 74 20 3d 20 76 61 6c 75 65 3b  tedCost = value;
9ac0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9ad0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
9b30: 61 74 65 20 6c 6f 6e 67 3f 20 65 73 74 69 6d 61  ate long? estima
9b40: 74 65 64 52 6f 77 73 3b 0d 0a 20 20 20 20 20 20  tedRows;..      
9b50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9b60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 73 74  .        /// Est
9b70: 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66  imated number of
9b80: 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 2e 20   rows returned. 
9b90: 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61   Using a null va
9ba0: 6c 75 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20  lue here..      
9bb0: 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65 73 20    /// indicates 
9bc0: 74 68 61 74 20 61 20 64 65 66 61 75 6c 74 20 65  that a default e
9bd0: 73 74 69 6d 61 74 65 64 20 72 6f 77 73 20 76 61  stimated rows va
9be0: 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73  lue should be us
9bf0: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
9c00: 20 54 68 69 73 20 70 72 6f 70 65 72 74 79 20 68   This property h
9c10: 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 66 20  as no effect if 
9c20: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
9c30: 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61  library is not a
9c40: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  t..        /// l
9c50: 65 61 73 74 20 76 65 72 73 69 6f 6e 20 33 2e 38  east version 3.8
9c60: 2e 32 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  .2...        ///
9c70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9c80: 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67       public long
9c90: 3f 20 45 73 74 69 6d 61 74 65 64 52 6f 77 73 0d  ? EstimatedRows.
9ca0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9cb0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
9cc0: 74 75 72 6e 20 65 73 74 69 6d 61 74 65 64 52 6f  turn estimatedRo
9cd0: 77 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ws; }..         
9ce0: 20 20 20 73 65 74 20 7b 20 65 73 74 69 6d 61 74     set { estimat
9cf0: 65 64 52 6f 77 73 20 3d 20 76 61 6c 75 65 3b 20  edRows = value; 
9d00: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
9d10: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9d60: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
9d70: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c  te SQLiteIndexFl
9d80: 61 67 73 3f 20 69 6e 64 65 78 46 6c 61 67 73 3b  ags? indexFlags;
9d90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9da0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9db0: 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 74   /// The flags t
9dc0: 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73  hat should be us
9dd0: 65 64 20 77 69 74 68 20 74 68 69 73 20 69 6e 64  ed with this ind
9de0: 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c  ex.  Using a nul
9df0: 6c 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  l value..       
9e00: 20 2f 2f 2f 20 68 65 72 65 20 69 6e 64 69 63 61   /// here indica
9e10: 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61 75  tes that a defau
9e20: 6c 74 20 66 6c 61 67 73 20 76 61 6c 75 65 20 73  lt flags value s
9e30: 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 20 20  hould be used.  
9e40: 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  This..        //
9e50: 2f 20 70 72 6f 70 65 72 74 79 20 68 61 73 20 6e  / property has n
9e60: 6f 20 65 66 66 65 63 74 20 69 66 20 74 68 65 20  o effect if the 
9e70: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
9e80: 61 72 79 20 69 73 20 6e 6f 74 20 61 74 20 6c 65  ary is not at le
9e90: 61 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ast..        ///
9ea0: 20 76 65 72 73 69 6f 6e 20 33 2e 39 2e 30 2e 0d   version 3.9.0..
9eb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9ec0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9ed0: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
9ee0: 64 65 78 46 6c 61 67 73 3f 20 49 6e 64 65 78 46  dexFlags? IndexF
9ef0: 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lags..        {.
9f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
9f10: 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 46   { return indexF
9f20: 6c 61 67 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  lags; }..       
9f30: 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65 78       set { index
9f40: 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d  Flags = value; }
9f50: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
9f60: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
9f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9fb0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
9fc0: 65 20 6c 6f 6e 67 3f 20 63 6f 6c 75 6d 6e 73 55  e long? columnsU
9fd0: 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed;..        //
9fe0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9ff0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
a000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e 64  .        /// Ind
a010: 69 63 61 74 65 73 20 77 68 69 63 68 20 63 6f 6c  icates which col
a020: 75 6d 6e 73 20 6f 66 20 74 68 65 20 76 69 72 74  umns of the virt
a030: 75 61 6c 20 74 61 62 6c 65 20 6d 61 79 20 62 65  ual table may be
a040: 20 72 65 71 75 69 72 65 64 20 62 79 20 74 68 65   required by the
a050: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 75  ..        /// cu
a060: 72 72 65 6e 74 20 73 63 61 6e 2e 20 20 56 69 72  rrent scan.  Vir
a070: 74 75 61 6c 20 74 61 62 6c 65 20 63 6f 6c 75 6d  tual table colum
a080: 6e 73 20 61 72 65 20 6e 75 6d 62 65 72 65 64 20  ns are numbered 
a090: 66 72 6f 6d 20 7a 65 72 6f 20 69 6e 20 74 68 65  from zero in the
a0a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72  ..        /// or
a0b0: 64 65 72 20 69 6e 20 77 68 69 63 68 20 74 68 65  der in which the
a0c0: 79 20 61 70 70 65 61 72 20 77 69 74 68 69 6e 20  y appear within 
a0d0: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
a0e0: 20 73 74 61 74 65 6d 65 6e 74 20 70 61 73 73 65   statement passe
a0f0: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  d..        /// t
a100: 6f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  o sqlite3_declar
a110: 65 5f 76 74 61 62 28 29 2e 20 20 46 6f 72 20 74  e_vtab().  For t
a120: 68 65 20 66 69 72 73 74 20 36 33 20 63 6f 6c 75  he first 63 colu
a130: 6d 6e 73 20 28 63 6f 6c 75 6d 6e 73 20 30 2d 36  mns (columns 0-6
a140: 32 29 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  2),..        ///
a150: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
a160: 6e 67 20 62 69 74 20 69 73 20 73 65 74 20 77 69  ng bit is set wi
a170: 74 68 69 6e 20 74 68 65 20 62 69 74 20 6d 61 73  thin the bit mas
a180: 6b 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  k if the column 
a190: 6d 61 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  may..        ///
a1a0: 20 62 65 20 72 65 71 75 69 72 65 64 20 62 79 20   be required by 
a1b0: 53 51 4c 69 74 65 2e 20 20 49 66 20 74 68 65 20  SQLite.  If the 
a1c0: 74 61 62 6c 65 20 68 61 73 20 61 74 20 6c 65 61  table has at lea
a1d0: 73 74 20 36 34 20 63 6f 6c 75 6d 6e 73 20 61 6e  st 64 columns an
a1e0: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  d..        /// a
a1f0: 6e 79 20 63 6f 6c 75 6d 6e 20 74 6f 20 74 68 65  ny column to the
a200: 20 72 69 67 68 74 20 6f 66 20 74 68 65 20 66 69   right of the fi
a210: 72 73 74 20 36 33 20 69 73 20 72 65 71 75 69 72  rst 63 is requir
a220: 65 64 2c 20 74 68 65 6e 20 62 69 74 20 36 33 20  ed, then bit 63 
a230: 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
a240: 63 6f 6c 55 73 65 64 20 69 73 20 61 6c 73 6f 20  colUsed is also 
a250: 73 65 74 2e 20 20 49 6e 20 6f 74 68 65 72 20 77  set.  In other w
a260: 6f 72 64 73 2c 20 63 6f 6c 75 6d 6e 20 69 43 6f  ords, column iCo
a270: 6c 20 6d 61 79 20 62 65 20 72 65 71 75 69 72 65  l may be require
a280: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  d..        /// i
a290: 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  f the expression
a2a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
a2b0: 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
a2c0: 2f 2f 20 3c 70 61 72 61 3e 3c 63 6f 64 65 3e 0d  // <para><code>.
a2d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 63 6f  .        /// (co
a2e0: 6c 55 73 65 64 20 26 61 6d 70 3b 20 28 28 73 71  lUsed &amp; ((sq
a2f0: 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 31 20 26  lite3_uint64)1 &
a300: 6c 74 3b 26 6c 74 3b 20 28 69 43 6f 6c 26 67 74  lt;&lt; (iCol&gt
a310: 3b 3d 36 33 20 3f 20 36 33 20 3a 20 69 43 6f 6c  ;=63 ? 63 : iCol
a320: 29 29 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  )))..        ///
a330: 20 3c 2f 63 6f 64 65 3e 3c 2f 70 61 72 61 3e 0d   </code></para>.
a340: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
a350: 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
a360: 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 6e 6f   evaluates to no
a370: 6e 2d 7a 65 72 6f 2e 20 20 55 73 69 6e 67 20 61  n-zero.  Using a
a380: 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72 65   null value here
a390: 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
a3a0: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  a..        /// d
a3b0: 65 66 61 75 6c 74 20 66 6c 61 67 73 20 76 61 6c  efault flags val
a3c0: 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  ue should be use
a3d0: 64 2e 20 20 54 68 69 73 20 70 72 6f 70 65 72 74  d.  This propert
a3e0: 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  y has no effect 
a3f0: 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  if..        /// 
a400: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
a410: 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61  library is not a
a420: 74 20 6c 65 61 73 74 20 76 65 72 73 69 6f 6e 20  t least version 
a430: 33 2e 31 30 2e 30 2e 0d 0a 20 20 20 20 20 20 20  3.10.0...       
a440: 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
a450: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a460: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
a470: 62 6c 69 63 20 6c 6f 6e 67 3f 20 43 6f 6c 75 6d  blic long? Colum
a480: 6e 73 55 73 65 64 0d 0a 20 20 20 20 20 20 20 20  nsUsed..        
a490: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
a4a0: 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6c 75  et { return colu
a4b0: 6d 6e 73 55 73 65 64 3b 20 7d 0d 0a 20 20 20 20  mnsUsed; }..    
a4c0: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f          set { co
a4d0: 6c 75 6d 6e 73 55 73 65 64 20 3d 20 76 61 6c 75  lumnsUsed = valu
a4e0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
a4f0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
a500: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
a510: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
a520: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a570: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
a580: 69 74 65 49 6e 64 65 78 20 48 65 6c 70 65 72 20  iteIndex Helper 
a590: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
a5a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
a5b0: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
a5c0: 72 65 73 65 6e 74 73 20 74 68 65 20 76 61 72 69  resents the vari
a5d0: 6f 75 73 20 69 6e 70 75 74 73 20 61 6e 64 20 6f  ous inputs and o
a5e0: 75 74 70 75 74 73 20 75 73 65 64 20 77 69 74 68  utputs used with
a5f0: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   the..    /// <s
a600: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
a610: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65  ManagedModule.Be
a620: 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
a630: 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  od...    /// </s
a640: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
a650: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
a660: 20 53 51 4c 69 74 65 49 6e 64 65 78 0d 0a 20 20   SQLiteIndex..  
a670: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
a680: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
a690: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
a6a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a6b0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
a6c0: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
a6d0: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
a6e0: 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
a6f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a700: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
a710: 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69   name="nConstrai
a720: 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
a730: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
a740: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
a750: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
a760: 22 20 2f 3e 20 28 61 6e 64 0d 0a 20 20 20 20 20  " /> (and..     
a770: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
a780: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
a790: 73 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e  straintUsage" />
a7a0: 29 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a  ) instances to..
a7b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d          /// pre-
a7c0: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
a7d0: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
a7e0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
a7f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
a800: 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a  me="nOrderBy">..
a810: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
a820: 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63  number of <see c
a830: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
a840: 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73 74  OrderBy" /> inst
a850: 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20  ances to..      
a860: 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61    /// pre-alloca
a870: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
a880: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
a890: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
a8a0: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
a8b0: 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
a8c0: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c  int nConstraint,
a8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
a8e0: 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20 20  t nOrderBy..    
a8f0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
a900: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a910: 20 20 69 6e 70 75 74 73 20 3d 20 6e 65 77 20 53    inputs = new S
a920: 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73  QLiteIndexInputs
a930: 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 6e 4f  (nConstraint, nO
a940: 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20  rderBy);..      
a950: 20 20 20 20 20 20 6f 75 74 70 75 74 73 20 3d 20        outputs = 
a960: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  new SQLiteIndexO
a970: 75 74 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69  utputs(nConstrai
a980: 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
a990: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
a9a0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
a9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
aa00: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
aa10: 65 20 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72  e Marshal Helper
aa20: 20 4d 65 74 68 6f 64 73 20 28 46 6f 72 20 54 65   Methods (For Te
aa30: 73 74 20 55 73 65 20 4f 6e 6c 79 29 0d 0a 20 20  st Use Only)..  
aa40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
aa50: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
aa60: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74   Attempts to det
aa70: 65 72 6d 69 6e 65 20 74 68 65 20 73 74 72 75 63  ermine the struc
aa80: 74 75 72 65 20 73 69 7a 65 73 20 6e 65 65 64 65  ture sizes neede
aa90: 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e 64 0d  d to create and.
aaa0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 70  .        /// pop
aab0: 75 6c 61 74 65 20 61 20 6e 61 74 69 76 65 0d 0a  ulate a native..
aac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
aad0: 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
aae0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
aaf0: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f  e3_index_info" /
ab00: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  >..        /// s
ab10: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
ab20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ab30: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
ab40: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65  param name="size
ab50: 4f 66 49 6e 66 6f 54 79 70 65 22 3e 0d 0a 20 20  OfInfoType">..  
ab60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69        /// The si
ab70: 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  ze of the native
ab80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
ab90: 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
aba0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
abb0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22  ite3_index_info"
abc0: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
abd0: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74   structure is st
abe0: 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20  ored here...    
abf0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
ac00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ac10: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
ac20: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 22  fConstraintType"
ac30: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
ac40: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e  he size of the n
ac50: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
ac60: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
ac70: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
ac80: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
ac90: 63 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 0d 0a  constraint" />..
aca0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
acb0: 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20  cture is stored 
acc0: 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  here...        /
acd0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ace0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
acf0: 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 4f 72 64 65  name="sizeOfOrde
ad00: 72 42 79 54 79 70 65 22 3e 0d 0a 20 20 20 20 20  rByType">..     
ad10: 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20     /// The size 
ad20: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  of the native.. 
ad30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
ad40: 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
ad50: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
ad60: 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 22  3_index_orderby"
ad70: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
ad80: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74   structure is st
ad90: 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20  ored here...    
ada0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
adb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
adc0: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
add0: 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  fConstraintUsage
ade0: 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  Type">..        
adf0: 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20  /// The size of 
ae00: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
ae10: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
ae20: 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
ae30: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
ae40: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
ae50: 75 73 61 67 65 22 20 2f 3e 0d 0a 20 20 20 20 20  usage" />..     
ae60: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
ae70: 20 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e   is stored here.
ae80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
ae90: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
aea0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76  private static v
aeb0: 6f 69 64 20 53 69 7a 65 4f 66 4e 61 74 69 76 65  oid SizeOfNative
aec0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  (..            o
aed0: 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 49 6e 66  ut int sizeOfInf
aee0: 6f 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20  oType,..        
aef0: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
af00: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  OfConstraintType
af10: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ,..            o
af20: 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64  ut int sizeOfOrd
af30: 65 72 42 79 54 79 70 65 2c 0d 0a 20 20 20 20 20  erByType,..     
af40: 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20 73         out int s
af50: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
af60: 73 61 67 65 54 79 70 65 0d 0a 20 20 20 20 20 20  sageType..      
af70: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
af80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
af90: 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 20 3d  sizeOfInfoType =
afa0: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
afb0: 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20  typeof(..       
afc0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
afd0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
afe0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 29  ite3_index_info)
aff0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b000: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
b010: 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ntType = Marshal
b020: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
b030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b040: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
b050: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
b060: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 29 3b  ex_constraint));
b070: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b080: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
b090: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
b0a0: 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
b0b0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
b0c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b0d0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
b0e0: 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  derby));....    
b0f0: 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f          sizeOfCo
b100: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
b110: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
b120: 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
b130: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
b140: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b150: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
b160: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 29 29  nstraint_usage))
b170: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
b180: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
b190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
b1d0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
b1e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b1f0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
b200: 6f 20 61 6c 6c 6f 63 61 74 65 20 61 6e 64 20 69  o allocate and i
b210: 6e 69 74 69 61 6c 69 7a 65 20 61 20 6e 61 74 69  nitialize a nati
b220: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
b230: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
b240: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b250: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
b260: 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  o" />..        /
b270: 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
b280: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
b290: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
b2a0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b2b0: 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20  nConstraint">.. 
b2c0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
b2d0: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
b2e0: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
b2f0: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 69 6e  onstraint" /> in
b300: 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20  stances to..    
b310: 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f      /// pre-allo
b320: 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d  cate space for..
b330: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b340: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b350: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b360: 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20  nOrderBy">..    
b370: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
b380: 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  er of <see cref=
b390: 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65  "SQLiteIndexOrde
b3a0: 72 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  rBy" /> instance
b3b0: 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
b3c0: 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73  / pre-allocate s
b3d0: 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20  pace for...     
b3e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
b3f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
b400: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
b410: 2f 2f 2f 20 54 68 65 20 6e 65 77 6c 79 20 61 6c  /// The newly al
b420: 6c 6f 63 61 74 65 64 20 6e 61 74 69 76 65 0d 0a  located native..
b430: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
b440: 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
b450: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
b460: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f  e3_index_info" /
b470: 3e 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  > structure..   
b480: 20 20 20 20 20 2f 2f 2f 20 2d 4f 52 2d 20 3c 73       /// -OR- <s
b490: 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
b4a0: 5a 65 72 6f 22 20 2f 3e 20 69 66 20 69 74 20 63  Zero" /> if it c
b4b0: 6f 75 6c 64 20 6e 6f 74 20 62 65 20 66 75 6c 6c  ould not be full
b4c0: 79 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20  y allocated...  
b4d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
b4e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
b4f0: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
b500: 50 74 72 20 41 6c 6c 6f 63 61 74 65 41 6e 64 49  Ptr AllocateAndI
b510: 6e 69 74 69 61 6c 69 7a 65 4e 61 74 69 76 65 28  nitializeNative(
b520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
b530: 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 0d 0a  t nConstraint,..
b540: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
b550: 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20  nOrderBy..      
b560: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
b570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b580: 49 6e 74 50 74 72 20 70 49 6e 64 65 78 20 3d 20  IntPtr pIndex = 
b590: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
b5a0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
b5b0: 20 70 49 6e 66 6f 20 3d 20 49 6e 74 50 74 72 2e   pInfo = IntPtr.
b5c0: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
b5d0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
b5e0: 72 61 69 6e 74 20 3d 20 49 6e 74 50 74 72 2e 5a  raint = IntPtr.Z
b5f0: 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
b600: 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42    IntPtr pOrderB
b610: 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  y = IntPtr.Zero;
b620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
b630: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
b640: 55 73 61 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a  Usage = IntPtr.Z
b650: 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
b660: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
b670: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b680: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
b690: 4f 66 49 6e 66 6f 54 79 70 65 3b 0d 0a 20 20 20  OfInfoType;..   
b6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
b6b0: 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79   sizeOfOrderByTy
b6c0: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
b6d0: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
b6e0: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 3b 0d 0a  onstraintType;..
b6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b700: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
b710: 61 69 6e 74 55 73 61 67 65 54 79 70 65 3b 0d 0a  aintUsageType;..
b720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b730: 20 20 53 69 7a 65 4f 66 4e 61 74 69 76 65 28 6f    SizeOfNative(o
b740: 75 74 20 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70  ut sizeOfInfoTyp
b750: 65 2c 20 6f 75 74 20 73 69 7a 65 4f 66 43 6f 6e  e, out sizeOfCon
b760: 73 74 72 61 69 6e 74 54 79 70 65 2c 0d 0a 20 20  straintType,..  
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 20 20 6f 75 74 20 73 69 7a 65 4f 66 4f 72 64 65    out sizeOfOrde
b790: 72 42 79 54 79 70 65 2c 20 6f 75 74 20 73 69 7a  rByType, out siz
b7a0: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
b7b0: 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  geType);....    
b7c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b7d0: 28 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 20  (sizeOfInfoType 
b7e0: 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20  > 0) &&..       
b7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 69               (si
b800: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
b810: 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20  pe > 0) &&..    
b820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b830: 28 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79  (sizeOfOrderByTy
b840: 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20  pe > 0) &&..    
b850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b860: 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e  (sizeOfConstrain
b870: 74 55 73 61 67 65 54 79 70 65 20 3e 20 30 29 29  tUsageType > 0))
b880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b890: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b8a0: 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 20 3d           pInfo =
b8b0: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
b8c0: 6c 6f 63 61 74 65 28 73 69 7a 65 4f 66 49 6e 66  locate(sizeOfInf
b8d0: 6f 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  oType);....     
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
b8f0: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c  Constraint = SQL
b900: 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
b910: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
b920: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
b930: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70  eOfConstraintTyp
b940: 65 20 2a 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29  e * nConstraint)
b950: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b960: 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72 42           pOrderB
b970: 79 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  y = SQLiteMemory
b980: 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20  .Allocate(..    
b990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9a0: 20 20 20 20 73 69 7a 65 4f 66 4f 72 64 65 72 42      sizeOfOrderB
b9b0: 79 54 79 70 65 20 2a 20 6e 4f 72 64 65 72 42 79  yType * nOrderBy
b9c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b9d0: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74            pConst
b9e0: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c  raintUsage = SQL
b9f0: 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
ba00: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
ba20: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
ba30: 67 65 54 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72  geType * nConstr
ba40: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
ba50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ba60: 20 28 28 70 49 6e 66 6f 20 21 3d 20 49 6e 74 50   ((pInfo != IntP
ba70: 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20  tr.Zero) &&..   
ba80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba90: 20 20 20 20 20 28 70 43 6f 6e 73 74 72 61 69 6e       (pConstrain
baa0: 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t != IntPtr.Zero
bab0: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
bac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
bad0: 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74 50 74  OrderBy != IntPt
bae0: 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20 20  r.Zero) &&..    
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb00: 20 20 20 20 28 70 43 6f 6e 73 74 72 61 69 6e 74      (pConstraint
bb10: 55 73 61 67 65 20 21 3d 20 49 6e 74 50 74 72 2e  Usage != IntPtr.
bb20: 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20  Zero))..        
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb50: 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
bb60: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
bb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb80: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
bb90: 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20 20 20  WriteInt32(..   
bba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbb0: 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20           pInfo, 
bbc0: 6f 66 66 73 65 74 2c 20 6e 43 6f 6e 73 74 72 61  offset, nConstra
bbd0: 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
bbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbf0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
bc00: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
bc10: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc30: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
bc40: 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
bc50: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc70: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
bc80: 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20  riteIntPtr(..   
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bca0: 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20           pInfo, 
bcb0: 6f 66 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61  offset, pConstra
bcc0: 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bce0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
bcf0: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
bd00: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
bd30: 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69  r.Size, sizeof(i
bd40: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd60: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
bd70: 72 69 74 65 49 6e 74 33 32 28 0d 0a 20 20 20 20  riteInt32(..    
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd90: 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f          pInfo, o
bda0: 66 66 73 65 74 2c 20 6e 4f 72 64 65 72 42 79 29  ffset, nOrderBy)
bdb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
bdd0: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
bde0: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
bdf0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
be10: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
be20: 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  t), IntPtr.Size)
be30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
be40: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
be50: 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
be60: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
be70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be80: 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73       pInfo, offs
be90: 65 74 2c 20 70 4f 72 64 65 72 42 79 29 3b 0d 0a  et, pOrderBy);..
bea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
beb0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
bec0: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
bed0: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bef0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
bf00: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
bf10: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
bf20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf30: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
bf40: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
bf50: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
bf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf70: 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c    pInfo, offset,
bf80: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
bf90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
bfb0: 49 6e 64 65 78 20 3d 20 70 49 6e 66 6f 3b 20 2f  Index = pInfo; /
bfc0: 2a 20 4e 4f 54 45 3a 20 53 75 63 63 65 73 73 2e  * NOTE: Success.
bfd0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
bfe0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
c000: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c010: 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
c020: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
c030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c040: 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20    if (pIndex == 
c050: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 2f 2a 20  IntPtr.Zero) /* 
c060: 4e 4f 54 45 3a 20 46 61 69 6c 75 72 65 3f 20 2a  NOTE: Failure? *
c070: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c080: 20 20 20 7b 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 55 73 61 67 65 20 21  onstraintUsage !
c0b0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c0f0: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
c100: 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  (pConstraintUsag
c110: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
c120: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
c130: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
c140: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
c150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c160: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
c170: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
c180: 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74 50 74  OrderBy != IntPt
c190: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
c1d0: 6d 6f 72 79 2e 46 72 65 65 28 70 4f 72 64 65 72  mory.Free(pOrder
c1e0: 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  By);..          
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f                pO
c200: 72 64 65 72 42 79 20 3d 20 49 6e 74 50 74 72 2e  rderBy = IntPtr.
c210: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c220: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c240: 20 20 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61      if (pConstra
c250: 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  int != IntPtr.Ze
c260: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
c270: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c290: 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
c2a0: 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e  .Free(pConstrain
c2b0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
c2d0: 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e 74 50 74  nstraint = IntPt
c2e0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c300: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c310: 20 20 20 20 20 20 69 66 20 28 70 49 6e 66 6f 20        if (pInfo 
c320: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
c330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c340: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c360: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
c370: 65 28 70 49 6e 66 6f 29 3b 0d 0a 20 20 20 20 20  e(pInfo);..     
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c390: 20 20 20 70 49 6e 66 6f 20 3d 20 49 6e 74 50 74     pInfo = IntPt
c3a0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
c3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
c3e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c3f0: 72 65 74 75 72 6e 20 70 49 6e 64 65 78 3b 0d 0a  return pIndex;..
c400: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c410: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c460: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
c470: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
c480: 2f 2f 20 46 72 65 65 73 20 61 6c 6c 20 74 68 65  // Frees all the
c490: 20 6d 65 6d 6f 72 79 20 61 73 73 6f 63 69 61 74   memory associat
c4a0: 65 64 20 77 69 74 68 20 61 20 6e 61 74 69 76 65  ed with a native
c4b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
c4c0: 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
c4d0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
c4e0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22  ite3_index_info"
c4f0: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
c500: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
c510: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c520: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
c530: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49   <param name="pI
c540: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
c550: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
c560: 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61  ointer to the na
c570: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
c580: 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72  ex_info structur
c590: 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e to..        //
c5a0: 2f 20 66 72 65 65 2e 0d 0a 20 20 20 20 20 20 20  / free...       
c5b0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
c5c0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
c5d0: 74 61 74 69 63 20 76 6f 69 64 20 46 72 65 65 4e  tatic void FreeN
c5e0: 61 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20  ative(..        
c5f0: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
c600: 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  x..            )
c610: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
c620: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e           if (pIn
c630: 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dex == IntPtr.Ze
c640: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
c650: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
c660: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
c670: 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
c680: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
c690: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
c6a0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
c6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c6c0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
c6d0: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
c6e0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
c6f0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
c700: 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61  raint = SQLiteMa
c710: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
c720: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c730: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
c740: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
c750: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
c760: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
c770: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
c780: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
c790: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69   IntPtr.Size, si
c7a0: 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
c7b0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
c7c0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
c7d0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
c7e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c7f0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
c800: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
c810: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
c820: 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72     IntPtr pOrder
c830: 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  By = SQLiteMarsh
c840: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  al.ReadIntPtr(..
c850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c860: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
c870: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c880: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
c890: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
c8a0: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
c8b0: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
c8c0: 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74  tPtr.Size, IntPt
c8d0: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
c8e0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
c8f0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
c900: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
c910: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
c920: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
c930: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
c940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
c950: 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  (pConstraintUsag
c960: 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
c970: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
c980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c990: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
c9a0: 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 55  ree(pConstraintU
c9b0: 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  sage);..        
c9c0: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
c9d0: 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74  intUsage = IntPt
c9e0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
c9f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
ca00: 20 20 20 20 20 20 69 66 20 28 70 4f 72 64 65 72        if (pOrder
ca10: 42 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  By != IntPtr.Zer
ca20: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
ca30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ca40: 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
ca50: 46 72 65 65 28 70 4f 72 64 65 72 42 79 29 3b 0d  Free(pOrderBy);.
ca60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ca70: 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e 74 50   pOrderBy = IntP
ca80: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
ca90: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
caa0: 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 73         if (pCons
cab0: 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72  traint != IntPtr
cac0: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
cad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cae0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
caf0: 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72  ory.Free(pConstr
cb00: 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  aint);..        
cb10: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
cb20: 69 6e 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  int = IntPtr.Zer
cb30: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
cb40: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
cb50: 20 69 66 20 28 70 49 6e 64 65 78 20 21 3d 20 49   if (pIndex != I
cb60: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
cb70: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
cb90: 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 49  teMemory.Free(pI
cba0: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndex);..        
cbb0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 20 3d          pIndex =
cbc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
cbd0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
cbe0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
cbf0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
cc00: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
cc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
cc50: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
cc60: 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73 68  n Internal Marsh
cc70: 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  al Helper Method
cc80: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
cc90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cca0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
ccb0: 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
ccc0: 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  to a native sqli
ccd0: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
cce0: 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20  tructure..      
ccf0: 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6e 65 77    /// into a new
cd00: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
cd10: 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
cd20: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
cd30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
cd40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
cd50: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
cd60: 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  Index">..       
cd70: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
cd80: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e  pointer to the n
cd90: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
cda0: 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
cdb0: 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  re to..        /
cdc0: 2f 2f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  // convert...   
cdd0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
cde0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
cdf0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 63 6c  param name="incl
ce00: 75 64 65 4f 75 74 70 75 74 22 3e 0d 0a 20 20 20  udeOutput">..   
ce10: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
ce20: 6f 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 69 65  o to include fie
ce30: 6c 64 73 20 66 72 6f 6d 20 74 68 65 20 6f 75 74  lds from the out
ce40: 70 75 74 73 20 70 6f 72 74 69 6f 6e 20 6f 66 20  puts portion of 
ce50: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
ce60: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
ce70: 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68  e; otherwise, th
ce80: 65 20 22 6f 75 74 70 75 74 22 20 66 69 65 6c 64  e "output" field
ce90: 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 72 65  s will not be re
cea0: 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ad...        ///
ceb0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
cec0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
ced0: 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20  me="index">..   
cee0: 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
cef0: 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
cf00: 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
cf10: 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
cf20: 6e 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20  n the newly..   
cf30: 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64       /// created
cf40: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
cf50: 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
cf60: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
cf70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
cf80: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  m>..        inte
cf90: 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64  rnal static void
cfa0: 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20   FromIntPtr(..  
cfb0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
cfc0: 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20   pIndex,..      
cfd0: 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63 6c 75        bool inclu
cfe0: 64 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20  deOutput,..     
cff0: 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
d000: 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a 20 20  eIndex index..  
d010: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
d020: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d030: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d      if (pIndex =
d040: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
d050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d060: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
d070: 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
d080: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
d090: 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74        int nConst
d0a0: 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61  raint = SQLiteMa
d0b0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
d0c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d0d0: 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
d0e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d0f0: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
d100: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
d110: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
d120: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
d130: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
d140: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
d150: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
d160: 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53   pConstraint = S
d170: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
d180: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
d190: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
d1a0: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
d1b0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
d1c0: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
d1d0: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
d1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1f0: 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
d200: 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
d210: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d220: 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d    int nOrderBy =
d230: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
d240: 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  eadInt32(..     
d250: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d260: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
d270: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
d280: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
d290: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
d2a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d2b0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
d2c0: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
d2d0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
d2e0: 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72     IntPtr pOrder
d2f0: 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  By = SQLiteMarsh
d300: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  al.ReadIntPtr(..
d310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d320: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
d330: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d340: 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
d350: 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74 72  ntUsage = IntPtr
d360: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
d370: 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64        if (includ
d380: 65 4f 75 74 70 75 74 29 0d 0a 20 20 20 20 20 20  eOutput)..      
d390: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d3a0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
d3b0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
d3c0: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
d3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d3e0: 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
d3f0: 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53  r.Size, IntPtr.S
d400: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
d410: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72           pConstr
d420: 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c 69  aintUsage = SQLi
d430: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
d440: 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
d450: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d460: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20  x, offset);..   
d470: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
d480: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20            index 
d490: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
d4a0: 78 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 6e  x(nConstraint, n
d4b0: 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  OrderBy);..     
d4c0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
d4d0: 65 78 49 6e 70 75 74 73 20 69 6e 70 75 74 73 20  exInputs inputs 
d4e0: 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 3b 0d  = index.Inputs;.
d4f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
d500: 66 20 28 69 6e 70 75 74 73 20 3d 3d 20 6e 75 6c  f (inputs == nul
d510: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d520: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
d530: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
d540: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
d550: 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d  [] constraints =
d560: 20 69 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61 69   inputs.Constrai
d570: 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nts;....        
d580: 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69      if (constrai
d590: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d5b0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
d5c0: 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
d5d0: 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64 65 72 42  OrderBy[] orderB
d5e0: 79 73 20 3d 20 69 6e 70 75 74 73 2e 4f 72 64 65  ys = inputs.Orde
d5f0: 72 42 79 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rBys;....       
d600: 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42 79       if (orderBy
d610: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
d620: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d630: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
d640: 20 20 20 54 79 70 65 20 63 6f 6e 73 74 72 61 69     Type constrai
d650: 6e 74 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28  ntType = typeof(
d660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d670: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
d680: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
d690: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 3b  dex_constraint);
d6a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d6b0: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
d6c0: 61 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68  aintType = Marsh
d6d0: 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20 20 20 20  al.SizeOf(..    
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
d6f0: 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a  traintType);....
d700: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
d710: 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74  (int iConstraint
d720: 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e   = 0; iConstrain
d730: 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b  t < nConstraint;
d740: 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d   iConstraint++).
d750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
d760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d770: 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74 20 3d  IntPtr pOffset =
d780: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49   SQLiteMarshal.I
d790: 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d  ntPtrForOffset(.
d7a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d7b0: 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74       pConstraint
d7c0: 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20  , iConstraint * 
d7d0: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
d7e0: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
d7f0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
d800: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
d810: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
d820: 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
d830: 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t =..           
d840: 20 20 20 20 20 20 20 20 20 28 55 6e 73 61 66 65           (Unsafe
d850: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
d860: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
d870: 74 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20 20  traint)..       
d880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d890: 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74   Marshal.PtrToSt
d8a0: 72 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c  ructure(pOffset,
d8b0: 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29   constraintType)
d8c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d8d0: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73       constraints
d8e0: 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 20  [iConstraint] = 
d8f0: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43  new SQLiteIndexC
d900: 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20  onstraint(..    
d910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d920: 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20  constraint);..  
d930: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
d940: 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20             Type 
d950: 6f 72 64 65 72 42 79 54 79 70 65 20 3d 20 74 79  orderByType = ty
d960: 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
d970: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
d980: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
d990: 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
d9a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d9b0: 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65    int sizeOfOrde
d9c0: 72 42 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61  rByType = Marsha
d9d0: 6c 2e 53 69 7a 65 4f 66 28 6f 72 64 65 72 42 79  l.SizeOf(orderBy
d9e0: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
d9f0: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
da00: 4f 72 64 65 72 42 79 20 3d 20 30 3b 20 69 4f 72  OrderBy = 0; iOr
da10: 64 65 72 42 79 20 3c 20 6e 4f 72 64 65 72 42 79  derBy < nOrderBy
da20: 3b 20 69 4f 72 64 65 72 42 79 2b 2b 29 0d 0a 20  ; iOrderBy++).. 
da30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
da40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
da50: 74 50 74 72 20 70 4f 66 66 73 65 74 20 3d 20 53  tPtr pOffset = S
da60: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74  QLiteMarshal.Int
da70: 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20  PtrForOffset(.. 
da80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da90: 20 20 20 70 4f 72 64 65 72 42 79 2c 20 69 4f 72     pOrderBy, iOr
daa0: 64 65 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72  derBy * sizeOfOr
dab0: 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20  derByType);.... 
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
dad0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
dae0: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
daf0: 5f 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42 79  _orderby orderBy
db00: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
db10: 20 20 20 20 20 20 20 20 28 55 6e 73 61 66 65 4e          (UnsafeN
db20: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
db30: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
db40: 62 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  by)..           
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72               Mar
db60: 73 68 61 6c 2e 50 74 72 54 6f 53 74 72 75 63 74  shal.PtrToStruct
db70: 75 72 65 28 70 4f 66 66 73 65 74 2c 20 6f 72 64  ure(pOffset, ord
db80: 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  erByType);....  
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72                or
dba0: 64 65 72 42 79 73 5b 69 4f 72 64 65 72 42 79 5d  derBys[iOrderBy]
dbb0: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
dbc0: 65 78 4f 72 64 65 72 42 79 28 6f 72 64 65 72 42  exOrderBy(orderB
dbd0: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
dbe0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
dbf0: 20 20 69 66 20 28 69 6e 63 6c 75 64 65 4f 75 74    if (includeOut
dc00: 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  put)..          
dc10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dc20: 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
dc30: 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73 20  Outputs outputs 
dc40: 3d 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 3b  = index.Outputs;
dc50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dc60: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 20      if (outputs 
dc70: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
dc90: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
dca0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
dcb0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
dcc0: 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74  age[] constraint
dcd0: 55 73 61 67 65 73 20 3d 0d 0a 20 20 20 20 20 20  Usages =..      
dce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
dcf0: 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74  tputs.Constraint
dd00: 55 73 61 67 65 73 3b 0d 0a 0d 0a 20 20 20 20 20  Usages;....     
dd10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
dd20: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20  onstraintUsages 
dd30: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
dd50: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
dd60: 20 20 20 20 20 20 20 20 20 54 79 70 65 20 63 6f           Type co
dd70: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
dd80: 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20  e = typeof(..   
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dda0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
ddb0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
ddc0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
ddd0: 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  age);....       
dde0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
ddf0: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
de00: 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  geType = Marshal
de10: 2e 53 69 7a 65 4f 66 28 0d 0a 20 20 20 20 20 20  .SizeOf(..      
de20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
de30: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
de40: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
de50: 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
de60: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b  iConstraint = 0;
de70: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e   iConstraint < n
de80: 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e  Constraint; iCon
de90: 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20  straint++)..    
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dec0: 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65     IntPtr pOffse
ded0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
dee0: 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  l.IntPtrForOffse
def0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
df00: 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e              pCon
df10: 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 69 43  straintUsage, iC
df20: 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65  onstraint * size
df30: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
df40: 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eType);....     
df50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
df60: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
df70: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
df80: 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
df90: 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
dfa0: 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
dfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 55 6e               (Un
dfc0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
dfd0: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
dfe0: 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
dff0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
e010: 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74 72 75  arshal.PtrToStru
e020: 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c 20 63  cture(pOffset, c
e030: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
e040: 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pe);....        
e050: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
e060: 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f  traintUsages[iCo
e070: 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e 65 77 20  nstraint] = new 
e080: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
e090: 72 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20 20  raintUsage(..   
e0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0b0: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55       constraintU
e0c0: 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  sage);..        
e0d0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
e0f0: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
e100: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
e110: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e120: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
e130: 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
e140: 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
e160: 70 75 74 73 2e 49 6e 64 65 78 4e 75 6d 62 65 72  puts.IndexNumber
e170: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
e180: 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20  .ReadInt32(..   
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
e1b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e1c0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
e1d0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
e1e0: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
e1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e200: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
e210: 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  t), IntPtr.Size)
e220: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e230: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64       outputs.Ind
e240: 65 78 53 74 72 69 6e 67 20 3d 20 53 51 4c 69 74  exString = SQLit
e250: 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72  eString.StringFr
e260: 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a 20  omUtf8IntPtr(.. 
e270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e280: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
e290: 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64  .ReadIntPtr(pInd
e2a0: 65 78 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 0d  ex, offset));...
e2b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e2c0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
e2d0: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
e2e0: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
e2f0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
e300: 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
e310: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
e320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e330: 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54 6f 46   outputs.NeedToF
e340: 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20 3d  reeIndexString =
e350: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
e360: 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  eadInt32(..     
e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
e380: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
e390: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e3a0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
e3b0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
e3c0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
e3e0: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
e3f0: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d  , sizeof(int));.
e400: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e410: 20 20 20 6f 75 74 70 75 74 73 2e 4f 72 64 65 72     outputs.Order
e420: 42 79 43 6f 6e 73 75 6d 65 64 20 3d 20 53 51 4c  ByConsumed = SQL
e430: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
e440: 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20  nt32(..         
e450: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
e460: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
e470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e480: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
e490: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
e4a0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
e4b0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
e4c0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69   sizeof(int), si
e4d0: 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0d 0a  zeof(double));..
e4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e4f0: 20 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61    outputs.Estima
e500: 74 65 64 43 6f 73 74 20 3d 20 53 51 4c 69 74 65  tedCost = SQLite
e510: 4d 61 72 73 68 61 6c 2e 52 65 61 64 44 6f 75 62  Marshal.ReadDoub
e520: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
e530: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
e540: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
e550: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
e560: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
e570: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
e580: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e590: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
e5a0: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 73  izeof(double), s
e5b0: 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d  izeof(long));...
e5c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e5d0: 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e   if (outputs.Can
e5e0: 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f 77 73  UseEstimatedRows
e5f0: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
e600: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e610: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
e620: 75 74 73 2e 45 73 74 69 6d 61 74 65 64 52 6f 77  uts.EstimatedRow
e630: 73 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  s = SQLiteMarsha
e640: 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d 0a 20 20  l.ReadInt64(..  
e650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e660: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
e670: 66 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  fset);..        
e680: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
e6a0: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
e6b0: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
e6c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e6d0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
e6e0: 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20 73 69 7a  izeof(long), siz
e6f0: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
e700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e710: 20 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65   (outputs.CanUse
e720: 49 6e 64 65 78 46 6c 61 67 73 28 29 29 0d 0a 20  IndexFlags()).. 
e730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
e740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e750: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e        outputs.In
e760: 64 65 78 46 6c 61 67 73 20 3d 20 28 53 51 4c 69  dexFlags = (SQLi
e770: 74 65 49 6e 64 65 78 46 6c 61 67 73 29 0d 0a 20  teIndexFlags).. 
e780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e790: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
e7a0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70  shal.ReadInt32(p
e7b0: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
e7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e7d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e7e0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
e7f0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
e800: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
e810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e820: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
e830: 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  nt), sizeof(long
e840: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
e850: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
e860: 74 73 2e 43 61 6e 55 73 65 43 6f 6c 75 6d 6e 73  ts.CanUseColumns
e870: 55 73 65 64 28 29 29 0d 0a 20 20 20 20 20 20 20  Used())..       
e880: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8a0: 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73 55  outputs.ColumnsU
e8b0: 73 65 64 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  sed = SQLiteMars
e8c0: 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d 0a  hal.ReadInt64(..
e8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8e0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
e8f0: 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20 20  offset);..      
e900: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e910: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e920: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e930: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e970: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e980: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e990: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50  >..        /// P
e9a0: 6f 70 75 6c 61 74 65 73 20 74 68 65 20 6f 75 74  opulates the out
e9b0: 70 75 74 73 20 6f 66 20 61 20 70 72 65 2d 61 6c  puts of a pre-al
e9c0: 6c 6f 63 61 74 65 64 20 6e 61 74 69 76 65 20 73  located native s
e9d0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
e9e0: 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  o..        /// s
e9f0: 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 61  tructure using a
ea00: 6e 20 65 78 69 73 74 69 6e 67 20 3c 73 65 65 20  n existing <see 
ea10: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
ea20: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  x" /> object..  
ea30: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
ea40: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
ea50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ea60: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
ea70: 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
ea80: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65         /// The e
ea90: 78 69 73 74 69 6e 67 20 3c 73 65 65 20 63 72 65  xisting <see cre
eaa0: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20  f="SQLiteIndex" 
eab0: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
eac0: 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ce containing.. 
ead0: 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f         /// the o
eae0: 75 74 70 75 74 20 64 61 74 61 20 74 6f 20 75 73  utput data to us
eaf0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
eb00: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
eb10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
eb20: 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20  e="pIndex">..   
eb30: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
eb40: 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
eb50: 68 65 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64  he pre-allocated
eb60: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
eb70: 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20  index_info..    
eb80: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
eb90: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
eba0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ebb0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ebc0: 65 3d 22 69 6e 63 6c 75 64 65 49 6e 70 75 74 22  e="includeInput"
ebd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
ebe0: 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69 6e 63 6c 75  on-zero to inclu
ebf0: 64 65 20 66 69 65 6c 64 73 20 66 72 6f 6d 20 74  de fields from t
ec00: 68 65 20 69 6e 70 75 74 73 20 70 6f 72 74 69 6f  he inputs portio
ec10: 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  n of the native.
ec20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
ec30: 75 63 74 75 72 65 3b 20 6f 74 68 65 72 77 69 73  ucture; otherwis
ec40: 65 2c 20 74 68 65 20 22 69 6e 70 75 74 22 20 66  e, the "input" f
ec50: 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74 20 62  ields will not b
ec60: 65 20 77 72 69 74 74 65 6e 2e 0d 0a 20 20 20 20  e written...    
ec70: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
ec80: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
ec90: 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 54  al static void T
eca0: 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  oIntPtr(..      
ecb0: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
ecc0: 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20  x index,..      
ecd0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
ece0: 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  dex,..          
ecf0: 20 20 62 6f 6f 6c 20 69 6e 63 6c 75 64 65 49 6e    bool includeIn
ed00: 70 75 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  put..           
ed10: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
ed20: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
ed30: 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ndex == null).. 
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
ed50: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
ed60: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
ed70: 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73  xOutputs outputs
ed80: 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73   = index.Outputs
ed90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
eda0: 20 69 66 20 28 6f 75 74 70 75 74 73 20 3d 3d 20   if (outputs == 
edb0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
edc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
edd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
ede0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
edf0: 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73 74  intUsage[] const
ee00: 72 61 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a 20  raintUsages =.. 
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
ee20: 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e  utputs.Constrain
ee30: 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20 20 20 20  tUsages;....    
ee40: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
ee50: 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 3d 20  traintUsages == 
ee60: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
ee70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
ee80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
ee90: 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20  LiteIndexInputs 
eea0: 69 6e 70 75 74 73 20 3d 20 6e 75 6c 6c 3b 0d 0a  inputs = null;..
eeb0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
eec0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
eed0: 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  t[] constraints 
eee0: 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
eef0: 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
ef00: 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64 65 72 42  OrderBy[] orderB
ef10: 79 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  ys = null;....  
ef20: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
ef30: 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20 20 20  cludeInput)..   
ef40: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ef50: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70 75              inpu
ef60: 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74  ts = index.Input
ef70: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
ef80: 20 20 20 20 20 20 69 66 20 28 69 6e 70 75 74 73        if (inputs
ef90: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
efa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
efb0: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
efc0: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
efd0: 61 69 6e 74 73 20 3d 20 69 6e 70 75 74 73 2e 43  aints = inputs.C
efe0: 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 0d 0a 20  onstraints;.... 
eff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
f000: 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d  f (constraints =
f010: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
f020: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f030: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
f040: 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
f050: 20 3d 20 69 6e 70 75 74 73 2e 4f 72 64 65 72 42   = inputs.OrderB
f060: 79 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ys;....         
f070: 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72         if (order
f080: 42 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  Bys == null)..  
f090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0a0: 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20    return;..     
f0b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f0c0: 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64          if (pInd
f0d0: 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ex == IntPtr.Zer
f0e0: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
f0f0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
f100: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
f110: 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20  ffset = 0;....  
f120: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43            int nC
f130: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69  onstraint = SQLi
f140: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
f150: 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
f160: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
f170: 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
f180: 6e 70 75 74 20 26 26 20 28 6e 43 6f 6e 73 74 72  nput && (nConstr
f190: 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74 72 61 69  aint != constrai
f1a0: 6e 74 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20  nts.Length))..  
f1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f1c0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
f1d0: 20 20 20 20 20 69 66 20 28 6e 43 6f 6e 73 74 72       if (nConstr
f1e0: 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74 72 61 69  aint != constrai
f1f0: 6e 74 55 73 61 67 65 73 2e 4c 65 6e 67 74 68 29  ntUsages.Length)
f200: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f210: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
f220: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
f230: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f240: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
f250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f260: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
f270: 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  t), IntPtr.Size)
f280: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f290: 20 69 66 20 28 69 6e 63 6c 75 64 65 49 6e 70 75   if (includeInpu
f2a0: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
f2b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f2c0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
f2d0: 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61  raint = SQLiteMa
f2e0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
f2f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f300: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f         pIndex, o
f310: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
f320: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
f330: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54  izeOfConstraintT
f340: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
f350: 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
f360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f370: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
f380: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
f390: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 29  dex_constraint))
f3a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f3b0: 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43       for (int iC
f3c0: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69  onstraint = 0; i
f3d0: 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f  Constraint < nCo
f3e0: 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74  nstraint; iConst
f3f0: 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20  raint++)..      
f400: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f420: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
f430: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
f440: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ex_constraint co
f450: 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20 20 20 20  nstraint =..    
f460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f470: 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61      new UnsafeNa
f480: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
f490: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
f4a0: 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
f4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4c0: 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73 5b 69     constraints[i
f4d0: 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d  Constraint]);...
f4e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f4f0: 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 53 74 72       Marshal.Str
f500: 75 63 74 75 72 65 54 6f 50 74 72 28 0d 0a 20 20  uctureToPtr(..  
f510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f520: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
f530: 2c 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  , SQLiteMarshal.
f540: 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
f550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f560: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74            pConst
f570: 72 61 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61 69  raint, iConstrai
f580: 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74  nt * sizeOfConst
f590: 72 61 69 6e 74 54 79 70 65 29 2c 0d 0a 20 20 20  raintType),..   
f5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5b0: 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20       false);..  
f5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f5d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
f5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
f5f0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
f600: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
f610: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
f620: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
f630: 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28  tr.Size, sizeof(
f640: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
f650: 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72        int nOrder
f660: 42 79 20 3d 20 69 6e 63 6c 75 64 65 49 6e 70 75  By = includeInpu
f670: 74 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t ?..           
f680: 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
f690: 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49 6e  al.ReadInt32(pIn
f6a0: 64 65 78 2c 20 6f 66 66 73 65 74 29 20 3a 20 30  dex, offset) : 0
f6b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f6c0: 20 69 66 20 28 69 6e 63 6c 75 64 65 49 6e 70 75   if (includeInpu
f6d0: 74 20 26 26 20 28 6e 4f 72 64 65 72 42 79 20 21  t && (nOrderBy !
f6e0: 3d 20 6f 72 64 65 72 42 79 73 2e 4c 65 6e 67 74  = orderBys.Lengt
f6f0: 68 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h))..           
f700: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
f710: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
f720: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
f730: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
f740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f750: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
f760: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
f770: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
f780: 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
f790: 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20  nput)..         
f7a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f7b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72        IntPtr pOr
f7c0: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61  derBy = SQLiteMa
f7d0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
f7e0: 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29  (pIndex, offset)
f7f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f800: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f       int sizeOfO
f810: 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72  rderByType = Mar
f820: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
f830: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
f840: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
f850: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
f860: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
f870: 62 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  by));....       
f880: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
f890: 74 20 69 4f 72 64 65 72 42 79 20 3d 20 30 3b 20  t iOrderBy = 0; 
f8a0: 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f 72 64 65  iOrderBy < nOrde
f8b0: 72 42 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b 29  rBy; iOrderBy++)
f8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f8d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f8e0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
f8f0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
f900: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
f910: 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a 20 20  by orderBy =..  
f920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f930: 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65        new Unsafe
f940: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
f950: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
f960: 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rby(..          
f970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f980: 20 20 6f 72 64 65 72 42 79 73 5b 69 4f 72 64 65    orderBys[iOrde
f990: 72 42 79 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  rBy]);....      
f9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
f9b0: 72 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65 54  rshal.StructureT
f9c0: 6f 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  oPtr(..         
f9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f9e0: 72 64 65 72 42 79 2c 20 53 51 4c 69 74 65 4d 61  rderBy, SQLiteMa
f9f0: 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
fa00: 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa20: 70 4f 72 64 65 72 42 79 2c 20 69 4f 72 64 65 72  pOrderBy, iOrder
fa30: 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72  By * sizeOfOrder
fa40: 42 79 54 79 70 65 29 2c 0d 0a 20 20 20 20 20 20  ByType),..      
fa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa60: 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20    false);..     
fa70: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
fa80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
fa90: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
faa0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
fab0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
fac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fad0: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
fae0: 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a  Size, IntPtr.Siz
faf0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
fb00: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
fb10: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c  raintUsage = SQL
fb20: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
fb30: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
fb40: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
fb50: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
fb60: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
fb70: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
fb80: 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e  eType = Marshal.
fb90: 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a  SizeOf(typeof(..
fba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbb0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
fbc0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
fbd0: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
fbe0: 67 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ge));....       
fbf0: 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43       for (int iC
fc00: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69  onstraint = 0; i
fc10: 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f  Constraint < nCo
fc20: 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74  nstraint; iConst
fc30: 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20  raint++)..      
fc40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
fc50: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
fc60: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
fc70: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
fc80: 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73  raint_usage cons
fc90: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a 20  traintUsage =.. 
fca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcb0: 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74     new UnsafeNat
fcc0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
fcd0: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
fce0: 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20  int_usage(..    
fcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd00: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73      constraintUs
fd10: 61 67 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74  ages[iConstraint
fd20: 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ]);....         
fd30: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 53         Marshal.S
fd40: 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d 0a  tructureToPtr(..
fd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd60: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73      constraintUs
fd70: 61 67 65 2c 20 53 51 4c 69 74 65 4d 61 72 73 68  age, SQLiteMarsh
fd80: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
fd90: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
fda0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72           pConstr
fdb0: 61 69 6e 74 55 73 61 67 65 2c 20 69 43 6f 6e 73  aintUsage, iCons
fdc0: 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43  traint * sizeOfC
fdd0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
fde0: 70 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  pe),..          
fdf0: 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 29            false)
fe00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
fe10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fe20: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
fe30: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
fe40: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
fe50: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
fe60: 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f  tPtr.Size, sizeo
fe70: 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
fe80: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
fe90: 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32  rshal.WriteInt32
fea0: 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c  (pIndex, offset,
feb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fec0: 20 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 4e    outputs.IndexN
fed0: 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  umber);....     
fee0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
fef0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
ff00: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
ff10: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
ff20: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
ff30: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d  , IntPtr.Size);.
ff40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
ff50: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
ff60: 74 65 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c  teIntPtr(pIndex,
ff70: 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
ff80: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
ff90: 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
ffa0: 72 46 72 6f 6d 53 74 72 69 6e 67 28 6f 75 74 70  rFromString(outp
ffb0: 75 74 73 2e 49 6e 64 65 78 53 74 72 69 6e 67 29  uts.IndexString)
ffc0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
ffd0: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
ffe0: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
fff0: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
10000 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
10010 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a  IntPtr.Size, siz
10020 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
10030 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
10040 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
10050 45 3a 20 57 65 20 6a 75 73 74 20 61 6c 6c 6f 63  E: We just alloc
10060 61 74 65 64 20 74 68 65 20 49 6e 64 65 78 53 74  ated the IndexSt
10070 72 69 6e 67 20 66 69 65 6c 64 3b 20 74 68 65 72  ring field; ther
10080 65 66 6f 72 65 2c 20 77 65 0d 0a 20 20 20 20 20  efore, we..     
10090 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
100a0 6e 65 65 64 20 74 6f 20 73 65 74 20 6d 61 6b 65  need to set make
100b0 20 73 75 72 65 20 74 68 65 20 4e 65 65 64 54 6f   sure the NeedTo
100c0 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20  FreeIndexString 
100d0 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 20  field..         
100e0 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 6e     //       is n
100f0 6f 6e 2d 7a 65 72 6f 3b 20 68 6f 77 65 76 65 72  on-zero; however
10100 2c 20 77 65 20 61 72 65 20 6e 6f 74 20 70 69 63  , we are not pic
10110 6b 79 20 61 62 6f 75 74 20 74 68 65 20 65 78 61  ky about the exa
10120 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ct..            
10130 2f 2f 20 20 20 20 20 20 20 76 61 6c 75 65 2e 0d  //       value..
10140 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
10150 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
10160 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78   needToFreeIndex
10170 53 74 72 69 6e 67 20 3d 20 6f 75 74 70 75 74 73  String = outputs
10180 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78  .NeedToFreeIndex
10190 53 74 72 69 6e 67 20 21 3d 20 30 20 3f 0d 0a 20  String != 0 ?.. 
101a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
101b0 75 74 70 75 74 73 2e 4e 65 65 64 54 6f 46 72 65  utputs.NeedToFre
101c0 65 49 6e 64 65 78 53 74 72 69 6e 67 20 3a 20 31  eIndexString : 1
101d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
101e0 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
101f0 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65 78  riteInt32(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 6e 65 65 64 54             needT
10220 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10230 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10240 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
10250 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
10260 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
10270 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
10280 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a  sizeof(int), siz
10290 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
102a0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
102b0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
102c0 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
102d0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
102e0 20 20 20 20 6f 75 74 70 75 74 73 2e 4f 72 64 65      outputs.Orde
102f0 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b 0d 0a 0d  rByConsumed);...
10300 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
10310 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
10320 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
10330 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10340 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
10350 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 64  f(int), sizeof(d
10360 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  ouble));....    
10370 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70          if (outp
10380 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f 73  uts.EstimatedCos
10390 74 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20  t.HasValue)..   
103a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
103b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
103c0 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 44  teMarshal.WriteD
103d0 6f 75 62 6c 65 28 70 49 6e 64 65 78 2c 20 6f 66  ouble(pIndex, of
103e0 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
103f0 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
10400 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f 73 74  ts.EstimatedCost
10410 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75  .GetValueOrDefau
10420 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  lt());..        
10430 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10440 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
10450 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
10460 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
10470 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
10480 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  t, sizeof(double
10490 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29  ), sizeof(long))
104a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
104b0 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e   if (outputs.Can
104c0 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f 77 73  UseEstimatedRows
104d0 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  () &&..         
104e0 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45         outputs.E
104f0 73 74 69 6d 61 74 65 64 52 6f 77 73 2e 48 61 73  stimatedRows.Has
10500 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20  Value)..        
10510 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10520 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
10530 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28  shal.WriteInt64(
10540 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
10550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10560 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74       outputs.Est
10570 69 6d 61 74 65 64 52 6f 77 73 2e 47 65 74 56 61  imatedRows.GetVa
10580 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b  lueOrDefault());
10590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
105a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
105b0 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
105c0 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
105d0 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
105e0 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
105f0 65 6f 66 28 6c 6f 6e 67 29 2c 20 73 69 7a 65 6f  eof(long), sizeo
10600 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
10610 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70          if (outp
10620 75 74 73 2e 43 61 6e 55 73 65 49 6e 64 65 78 46  uts.CanUseIndexF
10630 6c 61 67 73 28 29 20 26 26 0d 0a 20 20 20 20 20  lags() &&..     
10640 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
10650 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 2e 48 61  ts.IndexFlags.Ha
10660 73 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20  sValue)..       
10670 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10680 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
10690 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32  rshal.WriteInt32
106a0 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c  (pIndex, offset,
106b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
106c0 20 20 20 20 20 28 69 6e 74 29 6f 75 74 70 75 74       (int)output
106d0 73 2e 49 6e 64 65 78 46 6c 61 67 73 2e 47 65 74  s.IndexFlags.Get
106e0 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29  ValueOrDefault()
106f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10700 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
10710 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
10720 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
10730 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
10740 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
10750 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65  izeof(int), size
10760 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20  of(long));....  
10770 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75            if (ou
10780 74 70 75 74 73 2e 43 61 6e 55 73 65 43 6f 6c 75  tputs.CanUseColu
10790 6d 6e 73 55 73 65 64 28 29 20 26 26 0d 0a 20 20  mnsUsed() &&..  
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
107b0 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73 55 73 65  tputs.ColumnsUse
107c0 64 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20  d.HasValue)..   
107d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
107e0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
107f0 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
10800 6e 74 36 34 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt64(pIndex, off
10810 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
10820 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
10830 73 2e 43 6f 6c 75 6d 6e 73 55 73 65 64 2e 47 65  s.ColumnsUsed.Ge
10840 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28  tValueOrDefault(
10850 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
10860 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
10870 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
10880 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
10890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108b0 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
108e0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50  #region Public P
108f0 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20  roperties..     
10900 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
10910 65 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e 70  eIndexInputs inp
10920 75 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  uts;..        //
10930 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10940 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
10950 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
10960 64 65 78 49 6e 70 75 74 73 22 20 2f 3e 20 6f 62  dexInputs" /> ob
10970 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
10980 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
10990 20 20 2f 2f 2f 20 74 68 65 20 69 6e 70 75 74 73    /// the inputs
109a0 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65   to the <see cre
109b0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
109c0 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
109d0 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  x" />..        /
109e0 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  // method...    
109f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10a00 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
10a10 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e  ic SQLiteIndexIn
10a20 70 75 74 73 20 49 6e 70 75 74 73 0d 0a 20 20 20  puts Inputs..   
10a30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10a40 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
10a50 20 69 6e 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20   inputs; }..    
10a60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10a70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10a80 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
10ac0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
10ad0 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f  teIndexOutputs o
10ae0 75 74 70 75 74 73 3b 0d 0a 20 20 20 20 20 20 20  utputs;..       
10af0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
10b10 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
10b20 65 49 6e 64 65 78 4f 75 74 70 75 74 73 22 20 2f  eIndexOutputs" /
10b30 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
10b40 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  e containing..  
10b50 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 75        /// the ou
10b60 74 70 75 74 73 20 66 72 6f 6d 20 74 68 65 20 3c  tputs from the <
10b70 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
10b80 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
10b90 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20  estIndex" />..  
10ba0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
10bb0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
10bc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
10bd0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
10be0 49 6e 64 65 78 4f 75 74 70 75 74 73 20 4f 75 74  IndexOutputs Out
10bf0 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  puts..        {.
10c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
10c10 20 7b 20 72 65 74 75 72 6e 20 6f 75 74 70 75 74   { return output
10c20 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s; }..        }.
10c30 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
10c40 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
10c50 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
10c60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10cb0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
10cc0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
10cd0 42 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  Base Class..    
10ce0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10cf0 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
10d00 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d  s represents a m
10d10 61 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74  anaged virtual t
10d20 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
10d30 69 6f 6e 2e 20 20 49 74 20 69 73 0d 0a 20 20 20  ion.  It is..   
10d40 20 2f 2f 2f 20 6e 6f 74 20 73 65 61 6c 65 64 20   /// not sealed 
10d50 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73  and should be us
10d60 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20 63  ed as the base c
10d70 6c 61 73 73 20 66 6f 72 20 61 6e 79 20 75 73 65  lass for any use
10d80 72 2d 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 2f  r-defined..    /
10d90 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
10da0 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65   classes impleme
10db0 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20  nted in managed 
10dc0 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  code...    /// <
10dd0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
10de0 75 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c 69  ublic class SQLi
10df0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 3a  teVirtualTable :
10e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 53  ..            IS
10e10 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
10e20 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 20 2f  e, IDisposable /
10e30 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d  * NOT SEALED */.
10e40 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
10e50 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
10e60 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
10e70 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
10e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
10e90 65 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74  e index within t
10ea0 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  he array of stri
10eb0 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
10ec0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
10ed0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
10ee0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
10ef0 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
10f00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
10f10 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
10f20 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
10f30 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
10f40 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d   containing the.
10f50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  .        /// nam
10f60 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20  e of the module 
10f70 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 69  implementing thi
10f80 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
10f90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
10fa0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10fb0 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
10fc0 69 6e 74 20 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e  int ModuleNameIn
10fd0 64 65 78 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  dex = 0;....    
10fe0 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
11030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
11040 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
11050 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68  / The index with
11060 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  in the array of 
11070 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64  strings provided
11080 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
11090 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
110a0 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
110b0 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
110c0 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
110d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
110e0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
110f0 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  .Connect" /> met
11100 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  hods containing 
11110 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
11120 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74   name of the dat
11130 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67  abase containing
11140 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
11150 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
11160 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11170 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
11180 6e 73 74 20 69 6e 74 20 44 61 74 61 62 61 73 65  nst int Database
11190 4e 61 6d 65 49 6e 64 65 78 20 3d 20 31 3b 0d 0a  NameIndex = 1;..
111a0 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
11200 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11210 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
11220 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72  x within the arr
11230 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
11240 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
11250 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11260 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11270 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
11280 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
11290 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
112a0 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
112b0 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
112c0 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61  /> methods conta
112d0 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
112e0 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74     /// name of t
112f0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
11300 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11310 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11320 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
11330 20 69 6e 74 20 54 61 62 6c 65 4e 61 6d 65 49 6e   int TableNameIn
11340 64 65 78 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20  dex = 2;..      
11350 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
11360 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
11370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
113b0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
113c0 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72  on Public Constr
113d0 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
113e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
113f0 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
11400 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
11410 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e  e of this class.
11420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
11430 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11440 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
11450 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a  e="arguments">..
11460 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11470 6f 72 69 67 69 6e 61 6c 20 61 72 72 61 79 20 6f  original array o
11480 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64  f strings provid
11490 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ed to the..     
114a0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
114b0 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
114c0 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f  Module.Create" /
114d0 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  > and..        /
114e0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
114f0 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
11500 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  le.Connect" /> m
11510 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20  ethods...       
11520 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11530 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
11540 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
11550 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
11560 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
11570 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
11580 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
11590 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 72           this.ar
115a0 67 75 6d 65 6e 74 73 20 3d 20 61 72 67 75 6d 65  guments = argume
115b0 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nts;..        }.
115c0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
115d0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
115e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
115f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11600 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
11630 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
11640 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
11650 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
11660 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 3b  ing[] arguments;
11670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11680 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11690 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
116a0 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  l array of strin
116b0 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  gs provided to t
116c0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
116d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
116e0 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
116f0 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a  Create" /> and..
11700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
11710 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
11720 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e  nagedModule.Conn
11730 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e  ect" /> methods.
11740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
11750 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11760 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
11770 20 73 74 72 69 6e 67 5b 5d 20 41 72 67 75 6d 65   string[] Argume
11780 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  nts..        {..
11790 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
117a0 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
117b0 29 3b 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65  ); return argume
117c0 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  nts; }..        
117d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
117e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11820 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
11830 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11840 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
11850 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c  ame of the modul
11860 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74  e implementing t
11870 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
11880 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
11890 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
118a0 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
118b0 61 6c 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c 65  al string Module
118c0 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Name..        {.
118d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
118e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
118f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11900 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
11910 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11920 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
11930 67 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65  guments = Argume
11940 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nts;....        
11950 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67          if ((arg
11960 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20  uments != null) 
11970 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
11980 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e          (argumen
11990 74 73 2e 4c 65 6e 67 74 68 20 3e 20 4d 6f 64 75  ts.Length > Modu
119a0 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  leNameIndex)).. 
119b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
119c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
119d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
119e0 75 6d 65 6e 74 73 5b 4d 6f 64 75 6c 65 4e 61 6d  uments[ModuleNam
119f0 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20  eIndex];..      
11a00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
11a20 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
11a30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11a40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11a50 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
11a60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11a70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11a80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
11a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ad0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
11ae0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
11b00 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74   name of the dat
11b10 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67  abase containing
11b20 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
11b30 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
11b40 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11b50 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
11b60 74 75 61 6c 20 73 74 72 69 6e 67 20 44 61 74 61  tual string Data
11b70 62 61 73 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  baseName..      
11b80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11b90 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
11ba0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11bb0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
11bc0 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
11bd0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
11be0 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72  ] arguments = Ar
11bf0 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20  guments;....    
11c00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11c10 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75  (arguments != nu
11c20 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
11c30 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67              (arg
11c40 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20  uments.Length > 
11c50 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65  DatabaseNameInde
11c60 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x))..           
11c70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11c80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11c90 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 44 61 74  rn arguments[Dat
11ca0 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 5d 3b  abaseNameIndex];
11cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11cc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
11cd0 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
11ce0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d00 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
11d30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
11d40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11da0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11db0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
11dc0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
11dd0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
11de0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11df0 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
11e00 75 61 6c 20 73 74 72 69 6e 67 20 54 61 62 6c 65  ual string Table
11e10 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Name..        {.
11e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
11e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
11e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11e50 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
11e60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11e70 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
11e80 67 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65  guments = Argume
11e90 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nts;....        
11ea0 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67          if ((arg
11eb0 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20  uments != null) 
11ec0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
11ed0 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e          (argumen
11ee0 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c  ts.Length > Tabl
11ef0 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20  eNameIndex))..  
11f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11f20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67 75       return argu
11f30 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49  ments[TableNameI
11f40 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20  ndex];..        
11f50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11f60 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
11f70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11f80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11f90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
11fa0 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
11fb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11fc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11fd0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
11fe0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12030 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
12040 64 65 78 20 69 6e 64 65 78 3b 0d 0a 20 20 20 20  dex index;..    
12050 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12060 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12070 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
12080 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62  LiteIndex" /> ob
12090 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
120a0 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65  ntaining all the
120b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61  ..        /// da
120c0 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74  ta for the input
120d0 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65  s and outputs re
120e0 6c 61 74 69 6e 67 20 74 6f 20 74 68 65 20 6d 6f  lating to the mo
120f0 73 74 20 72 65 63 65 6e 74 20 69 6e 64 65 78 0d  st recent index.
12100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65 6c  .        /// sel
12110 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  ection...       
12120 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12130 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
12140 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 49 6e  virtual SQLiteIn
12150 64 65 78 20 49 6e 64 65 78 0d 0a 20 20 20 20 20  dex Index..     
12160 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12170 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
12180 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
12190 69 6e 64 65 78 3b 20 7d 0d 0a 20 20 20 20 20 20  index; }..      
121a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
121b0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
121c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
121d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12210 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
12220 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
12230 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12240 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
12250 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68 6f   This method sho
12260 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20  uld normally be 
12270 75 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  used by the..   
12280 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
12290 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
122a0 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
122b0 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 20 69 6e  ex" /> method in
122c0 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20 20 20   order to..     
122d0 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d 20 69     /// perform i
122e0 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 20 62  ndex selection b
122f0 61 73 65 64 20 6f 6e 20 74 68 65 20 63 6f 6e 73  ased on the cons
12300 74 72 61 69 6e 74 73 20 70 72 6f 76 69 64 65 64  traints provided
12310 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
12320 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72 65   /// SQLite core
12330 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
12340 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12350 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
12360 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
12370 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
12380 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
12390 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
123a0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
123b0 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74  containing all t
123c0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
123d0 64 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70  data for the inp
123e0 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20  uts and outputs 
123f0 72 65 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64 65  relating to inde
12400 78 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20  x selection...  
12410 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
12420 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
12430 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
12440 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
12450 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
12460 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
12470 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
12480 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62 6f  ublic virtual bo
12490 6f 6c 20 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  ol BestIndex(.. 
124a0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
124b0 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a 20 20  eIndex index..  
124c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
124d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
124e0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
124f0 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
12500 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20 3d      this.index =
12510 20 69 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20 20   index;....     
12520 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
12530 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
12540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
12550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12590 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
125a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
125b0 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
125c0 20 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20 72   to record the r
125d0 65 6e 61 6d 69 6e 67 20 6f 66 20 74 68 65 20 76  enaming of the v
125e0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 61 73 73  irtual table ass
125f0 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
12600 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6f   /// with this o
12610 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
12620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
12630 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12640 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12650 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
12660 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e 61    /// The new na
12670 6d 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  me for the virtu
12680 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
12690 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
126a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
126b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
126c0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f  /// Non-zero upo
126d0 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20  n success...    
126e0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
126f0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
12700 69 63 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20  ic virtual bool 
12710 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
12720 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
12730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
12740 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
12750 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
12760 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
12770 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67          if ((arg
12780 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20  uments != null) 
12790 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
127a0 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c      (arguments.L
127b0 65 6e 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d  ength > TableNam
127c0 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20  eIndex))..      
127d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
127e0 20 20 20 20 20 20 20 20 20 61 72 67 75 6d 65 6e           argumen
127f0 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65  ts[TableNameInde
12800 78 5d 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20  x] = name;..    
12810 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12820 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
12830 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12840 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
12850 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
12860 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
12870 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
12880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
128d0 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
128e0 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
128f0 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70  mbers..        p
12900 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61  rivate IntPtr na
12910 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20  tiveHandle;..   
12920 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12930 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
12940 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65  Returns the unde
12950 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61  rlying SQLite na
12960 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f  tive handle asso
12970 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
12980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62  ..        /// ob
12990 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
129a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
129b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
129c0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49  public virtual I
129d0 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64  ntPtr NativeHand
129e0 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
129f0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
12a00 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
12a10 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48  ; return nativeH
12a20 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20  andle; }..      
12a30 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
12a40 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c  et { nativeHandl
12a50 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  e = value; }..  
12a60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12a70 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
12a80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12ad0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
12ae0 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65  n IDisposable Me
12af0 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
12b00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12b10 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
12b20 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
12b30 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
12b40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
12b50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
12b60 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
12b70 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
12b80 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
12b90 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
12ba0 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
12bb0 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
12bc0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
12bd0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
12be0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
12bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c30 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
12c40 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
12c50 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
12c60 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
12c70 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f  ivate bool dispo
12c80 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed;..        //
12c90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12ca0 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20       /// Throws 
12cb0 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62  an <see cref="Ob
12cc0 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
12cd0 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69  ption" /> if thi
12ce0 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20  s object..      
12cf0 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68    /// instance h
12d00 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64  as been disposed
12d10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12d20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12d30 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
12d40 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20  CheckDisposed() 
12d50 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
12d60 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f       {..#if THRO
12d70 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20  W_ON_DISPOSED.. 
12d80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
12d90 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
12da0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12db0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
12dc0 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  ew ObjectDispose
12dd0 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  dException(..   
12de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12df0 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56 69   typeof(SQLiteVi
12e00 72 74 75 61 6c 54 61 62 6c 65 29 2e 4e 61 6d 65  rtualTable).Name
12e10 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12e20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
12e30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
12e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12e90 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12ea0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69  ..        /// Di
12eb0 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f  sposes of this o
12ec0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
12ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
12ee0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12ef0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12f00 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20  ="disposing">.. 
12f10 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
12f20 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68  ero if this meth
12f30 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c  od is being call
12f40 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
12f50 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
12f60 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f  ef="Dispose()" /
12f70 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20  > method.  Zero 
12f80 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69  if this method i
12f90 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a  s being called..
12fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d          /// from
12fb0 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d   the finalizer..
12fc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
12fd0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
12fe0 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
12ff0 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
13000 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
13010 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13020 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
13030 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
13040 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13050 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
13060 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
13070 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20         //{..    
13080 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
13090 20 20 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 20 20 20 20 20 20 20 20  //////..        
130c0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
130d0 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64   dispose managed
130e0 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
130f0 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13100 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
13110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13140 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  //}....         
13150 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
13160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
13180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13190 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61  / release unmana
131a0 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
131b0 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
131c0 20 20 20 20 20 20 20 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 0d 0a 0d  /////////////...
131f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13200 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65   disposed = true
13210 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
13220 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
13230 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
13240 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13290 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
132a0 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
132b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
132c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
132d0 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74   /// Finalizes t
132e0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
132f0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
13300 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13310 20 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72        ~SQLiteVir
13320 74 75 61 6c 54 61 62 6c 65 28 29 0d 0a 20 20 20  tualTable()..   
13330 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13340 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
13350 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
13360 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
13370 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
13380 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
13390 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
133e0 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
133f0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
13400 72 73 6f 72 20 42 61 73 65 20 43 6c 61 73 73 0d  rsor Base Class.
13410 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
13420 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
13430 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74   class represent
13440 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74  s a managed virt
13450 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
13460 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
13470 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73 20  ..    /// It is 
13480 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73  not sealed and s
13490 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73  hould be used as
134a0 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   the base class 
134b0 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f  for any..    ///
134c0 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69   user-defined vi
134d0 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
134e0 6f 72 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65  or classes imple
134f0 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65  mented in manage
13500 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
13510 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13520 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53 51   public class SQ
13530 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
13540 43 75 72 73 6f 72 20 3a 0d 0a 20 20 20 20 20 20  Cursor :..      
13550 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74        ISQLiteNat
13560 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73 70  iveHandle, IDisp
13570 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45  osable /* NOT SE
13580 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a  ALED */..    {..
13590 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
135a0 50 72 6f 74 65 63 74 65 64 20 43 6f 6e 73 74 61  Protected Consta
135b0 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
135c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
135d0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
135e0 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e  ue represents an
135f0 20 69 6e 76 61 6c 69 64 20 69 6e 74 65 67 65 72   invalid integer
13600 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75   row sequence nu
13610 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
13620 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13630 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
13640 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
13650 20 69 6e 74 20 49 6e 76 61 6c 69 64 52 6f 77 49   int InvalidRowI
13660 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20  ndex = 0;..     
13670 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13680 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
136e0 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
136f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
13700 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13710 20 2f 2f 2f 20 54 68 65 20 66 69 65 6c 64 20 68   /// The field h
13720 6f 6c 64 73 20 74 68 65 20 69 6e 74 65 67 65 72  olds the integer
13730 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75   row sequence nu
13740 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63 75 72  mber for the cur
13750 72 65 6e 74 20 72 6f 77 0d 0a 20 20 20 20 20 20  rent row..      
13760 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 64 20 74 6f    /// pointed to
13770 20 62 79 20 74 68 69 73 20 63 75 72 73 6f 72 20   by this cursor 
13780 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
13790 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
137a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
137b0 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 72 6f    private int ro
137c0 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  wIndex;..       
137d0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
137e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
137f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13830 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
13840 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
13850 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
13860 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13870 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
13880 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
13890 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
138a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
138b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
138c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
138d0 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
138e0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
138f0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
13900 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
13910 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
13920 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
13930 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6f   /// with this o
13940 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
13950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
13960 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
13970 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72 74  ublic SQLiteVirt
13980 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 0d  ualTableCursor(.
13990 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
139a0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
139b0 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  table..         
139c0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
139d0 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
139e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
139f0 20 20 20 74 68 69 73 2e 74 61 62 6c 65 20 3d 20     this.table = 
13a00 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  table;..        
13a10 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
13a20 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
13a30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a70 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13a80 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
13a90 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  ate Constructors
13aa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
13ab0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13ac0 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
13ad0 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
13ae0 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
13af0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13b00 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
13b10 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75 61  ate SQLiteVirtua
13b20 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29 0d 0a  lTableCursor()..
13b30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13b40 20 20 20 20 20 20 20 72 6f 77 49 6e 64 65 78 20         rowIndex 
13b50 3d 20 49 6e 76 61 6c 69 64 52 6f 77 49 6e 64 65  = InvalidRowInde
13b60 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  x;..        }.. 
13b70 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
13b80 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
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 2f 2f 2f 2f 2f  ////////////////
13bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13be0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50  #region Public P
13bf0 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20  roperties..     
13c00 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
13c10 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
13c20 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble;..        //
13c30 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13c40 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
13c50 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
13c60 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
13c70 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
13c80 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
13c90 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
13ca0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
13cb0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
13cc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13cd0 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
13ce0 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  l SQLiteVirtualT
13cf0 61 62 6c 65 20 54 61 62 6c 65 0d 0a 20 20 20 20  able Table..    
13d00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13d10 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
13d20 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
13d30 20 74 61 62 6c 65 3b 20 7d 0d 0a 20 20 20 20 20   table; }..     
13d40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
13da0 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 69     private int i
13db0 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20  ndexNumber;..   
13dc0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13dd0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13de0 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68  Number used to h
13df0 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
13e00 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
13e10 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
13e20 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  l..        /// b
13e30 65 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73  e set via the <s
13e40 65 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22  ee cref="Filter"
13e50 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
13e60 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13e70 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
13e80 6c 69 63 20 76 69 72 74 75 61 6c 20 69 6e 74 20  lic virtual int 
13e90 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20 20  IndexNumber..   
13ea0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13eb0 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
13ec0 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
13ed0 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20 7d  n indexNumber; }
13ee0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
13ef0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
13f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13f40 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
13f50 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53 74  e string indexSt
13f60 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ring;..        /
13f70 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13f80 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67        /// String
13f90 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
13fa0 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
13fb0 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73  ted index.  This
13fc0 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20   value will..   
13fd0 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20       /// be set 
13fe0 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65  via the <see cre
13ff0 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  f="Filter" /> me
14000 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
14010 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14020 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
14030 72 74 75 61 6c 20 73 74 72 69 6e 67 20 49 6e 64  rtual string Ind
14040 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  exString..      
14050 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14060 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
14070 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 69  osed(); return i
14080 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20  ndexString; }.. 
14090 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
140a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
140b0 2f 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 0d 0a 0d 0a 20  ///////////.... 
140f0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
14100 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
14110 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues;..        //
14120 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14130 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
14140 75 65 73 20 75 73 65 64 20 74 6f 20 66 69 6c 74  ues used to filt
14150 65 72 20 74 68 65 20 72 6f 77 73 20 72 65 74 75  er the rows retu
14160 72 6e 65 64 20 76 69 61 20 74 68 69 73 20 63 75  rned via this cu
14170 72 73 6f 72 20 6f 62 6a 65 63 74 0d 0a 20 20 20  rsor object..   
14180 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
14190 65 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  e.  This value w
141a0 69 6c 6c 20 62 65 20 73 65 74 20 76 69 61 20 74  ill be set via t
141b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69  he <see cref="Fi
141c0 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20  lter" />..      
141d0 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20    /// method... 
141e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
141f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
14200 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51  ublic virtual SQ
14210 4c 69 74 65 56 61 6c 75 65 5b 5d 20 56 61 6c 75  LiteValue[] Valu
14220 65 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  es..        {.. 
14230 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
14240 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
14250 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65 73 3b  ; return values;
14260 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
14270 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
14280 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
14290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
142e0 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65  #region Protecte
142f0 64 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  d Methods..     
14300 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74  ..        /// At
14320 74 65 6d 70 74 73 20 74 6f 20 70 65 72 73 69 73  tempts to persis
14330 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
14340 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
14350 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63  eValue" /> objec
14360 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
14370 6e 73 74 61 6e 63 65 73 20 69 6e 20 6f 72 64 65  nstances in orde
14380 72 20 74 6f 20 6d 61 6b 65 20 74 68 65 6d 20 61  r to make them a
14390 76 61 69 6c 61 62 6c 65 20 61 66 74 65 72 20 74  vailable after t
143a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
143b0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
143c0 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
143d0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
143e0 64 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20 20  d returns...    
143f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14400 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
14410 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
14420 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ues">..        /
14430 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
14440 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
14450 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63  eValue" /> objec
14460 74 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 20 62  t instances to b
14470 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  e..        /// p
14480 65 72 73 69 73 74 65 64 2e 0d 0a 20 20 20 20 20  ersisted...     
14490 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
144a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
144b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
144c0 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
144d0 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
144e0 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a  iteValue" /> obj
144f0 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74 68  ect instances th
14500 61 74 20 77 65 72 65 0d 0a 20 20 20 20 20 20 20  at were..       
14510 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 6c   /// successfull
14520 79 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20 20  y persisted...  
14530 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
14540 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
14550 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
14560 69 6e 74 20 54 72 79 50 65 72 73 69 73 74 56 61  int TryPersistVa
14570 6c 75 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20  lues(..         
14580 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d     SQLiteValue[]
14590 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   values..       
145a0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
145b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
145c0 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a  nt result = 0;..
145d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
145e0 20 28 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c   (values != null
145f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
14600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14610 20 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74    foreach (SQLit
14620 65 56 61 6c 75 65 20 76 61 6c 75 65 20 69 6e 20  eValue value in 
14630 76 61 6c 75 65 73 29 0d 0a 20 20 20 20 20 20 20  values)..       
14640 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14660 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
14670 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14680 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
14690 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
146a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
146b0 28 76 61 6c 75 65 2e 50 65 72 73 69 73 74 28 29  (value.Persist()
146c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
146d0 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
146e0 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t++;..          
146f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14700 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14710 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
14720 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
14730 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
14740 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
14750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14790 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
147a0 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
147b0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
147c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
147d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
147e0 73 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20  s method should 
147f0 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64  normally be used
14800 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
14810 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
14820 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
14830 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20  dule.Filter" /> 
14840 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72 20  method in order 
14850 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
14860 70 65 72 66 6f 72 6d 20 66 69 6c 74 65 72 69 6e  perform filterin
14870 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  g of the result 
14880 72 6f 77 73 20 61 6e 64 2f 6f 72 20 74 6f 20 72  rows and/or to r
14890 65 63 6f 72 64 20 74 68 65 20 66 69 6c 74 65 72  ecord the filter
148a0 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
148b0 20 63 72 69 74 65 72 69 61 20 70 72 6f 76 69 64   criteria provid
148c0 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
148d0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
148e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
148f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14900 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
14910 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d 0a  "indexNumber">..
14920 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62          /// Numb
14930 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  er used to help 
14940 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
14950 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20  ected index...  
14960 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
14970 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
14980 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
14990 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20 20  exString">..    
149a0 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75      /// String u
149b0 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e  sed to help iden
149c0 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65  tify the selecte
149d0 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
149e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
149f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
14a00 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22  am name="values"
14a10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14a20 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65 73  he values corres
14a30 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68 20  ponding to each 
14a40 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73 65  column in the se
14a50 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
14a60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
14a70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
14a80 6c 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69 64  lic virtual void
14a90 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20   Filter(..      
14aa0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 4e        int indexN
14ab0 75 6d 62 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  umber,..        
14ac0 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
14ad0 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20  String,..       
14ae0 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65       SQLiteValue
14af0 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20  [] values..     
14b00 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
14b10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14b20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
14b30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
14b40 20 69 66 20 28 28 76 61 6c 75 65 73 20 21 3d 20   if ((values != 
14b50 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20  null) &&..      
14b60 20 20 20 20 20 20 20 20 20 20 28 54 72 79 50 65            (TryPe
14b70 72 73 69 73 74 56 61 6c 75 65 73 28 76 61 6c 75  rsistValues(valu
14b80 65 73 29 20 21 3d 20 76 61 6c 75 65 73 2e 4c 65  es) != values.Le
14b90 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20  ngth))..        
14ba0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14bb0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
14bc0 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
14bd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
14be0 20 20 20 20 20 20 20 22 66 61 69 6c 65 64 20 74         "failed t
14bf0 6f 20 70 65 72 73 69 73 74 20 6f 6e 65 20 6f 72  o persist one or
14c00 20 6d 6f 72 65 20 76 61 6c 75 65 73 22 29 3b 0d   more values");.
14c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
14c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
14c30 69 73 2e 69 6e 64 65 78 4e 75 6d 62 65 72 20 3d  is.indexNumber =
14c40 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20   indexNumber;.. 
14c50 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
14c60 69 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 69 6e  indexString = in
14c70 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20  dexString;..    
14c80 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c          this.val
14c90 75 65 73 20 3d 20 76 61 6c 75 65 73 3b 0d 0a 20  ues = values;.. 
14ca0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
14cb0 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
14d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
14d10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
14d20 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
14d30 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71   integer row seq
14d40 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f 72  uence number for
14d50 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77   the current row
14d60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14d70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14d80 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
14d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
14da0 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65  e integer row se
14db0 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f  quence number fo
14dc0 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  r the current ro
14dd0 77 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 0d 0a  w -OR- zero if..
14de0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63          /// it c
14df0 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
14e00 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ned...        //
14e10 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
14e20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
14e30 74 75 61 6c 20 69 6e 74 20 47 65 74 52 6f 77 49  tual int GetRowI
14e40 6e 64 65 78 28 29 0d 0a 20 20 20 20 20 20 20 20  ndex()..        
14e50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
14e60 65 74 75 72 6e 20 72 6f 77 49 6e 64 65 78 3b 0d  eturn rowIndex;.
14e70 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
14e80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
14e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
14ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
14ee0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14ef0 2f 2f 2f 20 41 64 6a 75 73 74 73 20 74 68 65 20  /// Adjusts the 
14f00 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71 75  integer row sequ
14f10 65 6e 63 65 20 6e 75 6d 62 65 72 20 73 6f 20 74  ence number so t
14f20 68 61 74 20 69 74 20 72 65 66 65 72 73 20 74 6f  hat it refers to
14f30 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
14f40 2f 20 6e 65 78 74 20 72 6f 77 2e 0d 0a 20 20 20  / next row...   
14f50 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14f60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
14f70 6c 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69 64  lic virtual void
14f80 20 4e 65 78 74 52 6f 77 49 6e 64 65 78 28 29 0d   NextRowIndex().
14f90 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
14fa0 20 20 20 20 20 20 20 20 72 6f 77 49 6e 64 65 78          rowIndex
14fb0 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ++;..        }..
14fc0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
14fd0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
14fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15030 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
15040 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
15050 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
15060 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61 74  ivate IntPtr nat
15070 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  iveHandle;..    
15080 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15090 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
150a0 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72  eturns the under
150b0 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74  lying SQLite nat
150c0 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63  ive handle assoc
150d0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
150e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a  .        /// obj
150f0 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
15100 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15110 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
15120 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49 6e  ublic virtual In
15130 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c  tPtr NativeHandl
15140 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
15150 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
15160 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
15170 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48 61   return nativeHa
15180 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ndle; }..       
15190 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65       internal se
151a0 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c 65  t { nativeHandle
151b0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
151c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
151d0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
151e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
151f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15230 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
15240 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d   IDisposable Mem
15250 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
15260 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15270 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65       /// Dispose
15280 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  s of this object
15290 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
152a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
152b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
152c0 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
152d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
152e0 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
152f0 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  e(true);..      
15300 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
15310 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
15320 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
15330 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
15340 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
15350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15390 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
153a0 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
153b0 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62  e "Pattern" Memb
153c0 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ers..        pri
153d0 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73  vate bool dispos
153e0 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed;..        ///
153f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15400 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61      /// Throws a
15410 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a  n <see cref="Obj
15420 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
15430 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69 73  tion" /> if this
15440 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
15450 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68 61   /// instance ha
15460 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e  s been disposed.
15470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15480 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15490 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43    private void C
154a0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f  heckDisposed() /
154b0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
154c0 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57      {..#if THROW
154d0 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20  _ON_DISPOSED..  
154e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
154f0 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
15500 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15510 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
15520 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
15530 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
15540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15550 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56 69 72  typeof(SQLiteVir
15560 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 29  tualTableCursor)
15570 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
15580 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
15590 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
155a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
155b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
155f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15600 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15610 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
15620 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
15630 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
15640 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15650 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15660 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
15670 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
15680 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
15690 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
156a0 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65   called from the
156b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
156c0 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65  ee cref="Dispose
156d0 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20  ()" /> method.  
156e0 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  Zero if this met
156f0 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
15700 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  led..        ///
15710 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69   from the finali
15720 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  zer...        //
15730 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
15740 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
15750 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
15760 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
15770 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g)..        {.. 
15780 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
15790 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
157a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
157b0 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28            //if (
157c0 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
157d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d              //{.
157e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
157f0 20 2f 2f 20 20 20 20 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 20 20 20  ///////////..   
15820 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15830 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61     // dispose ma
15840 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20  naged resources 
15850 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  here.....       
15860 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f           //    /
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15890 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
158a0 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20       //}....    
158b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
158c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
158f0 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
15900 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
15910 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
15920 20 20 20 20 20 20 20 20 20 20 20 20 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
15960 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d        disposed =
15970 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
15980 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
15990 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
159a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
159b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15a00 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72     #region Destr
15a10 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  uctor..        /
15a20 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15a30 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69        /// Finali
15a40 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
15a50 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
15a60 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15a70 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69  >..        ~SQLi
15a80 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
15a90 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20 20  rsor()..        
15aa0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
15ab0 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
15ac0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
15ad0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
15ae0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
15af0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
15b50 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61  region ISQLiteNa
15b60 74 69 76 65 48 61 6e 64 6c 65 20 49 6e 74 65 72  tiveHandle Inter
15b70 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  face..    /// <s
15b80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
15b90 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20   This interface 
15ba0 72 65 70 72 65 73 65 6e 74 73 20 61 20 6e 61 74  represents a nat
15bb0 69 76 65 20 68 61 6e 64 6c 65 20 70 72 6f 76 69  ive handle provi
15bc0 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  ded by the SQLit
15bd0 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20  e core..    /// 
15be0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
15bf0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15c00 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61    public interfa
15c10 63 65 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  ce ISQLiteNative
15c20 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20  Handle..    {.. 
15c30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
15c40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
15c50 2f 20 54 68 65 20 6e 61 74 69 76 65 20 68 61 6e  / The native han
15c60 64 6c 65 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  dle value...    
15c70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15c80 79 3e 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  y>..        IntP
15c90 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  tr NativeHandle 
15ca0 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 7d 0d  { get; }..    }.
15cb0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
15cc0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
15d20 6e 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  n ISQLiteManaged
15d30 4d 6f 64 75 6c 65 20 49 6e 74 65 72 66 61 63 65  Module Interface
15d40 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
15d50 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
15d60 73 20 69 6e 74 65 72 66 61 63 65 20 72 65 70 72  s interface repr
15d70 65 73 65 6e 74 73 20 61 20 76 69 72 74 75 61 6c  esents a virtual
15d80 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
15d90 61 74 69 6f 6e 20 77 72 69 74 74 65 6e 20 69 6e  ation written in
15da0 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 61 67 65  ..    /// manage
15db0 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
15dc0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15dd0 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63   public interfac
15de0 65 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  e ISQLiteManaged
15df0 4d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20  Module..    {.. 
15e00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
15e10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
15e20 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65  / Returns non-ze
15e30 72 6f 20 69 66 20 74 68 65 20 73 63 68 65 6d 61  ro if the schema
15e40 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
15e50 20 74 61 62 6c 65 20 68 61 73 20 62 65 65 6e 0d   table has been.
15e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 63  .        /// dec
15e70 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  lared...        
15e80 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
15e90 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 44 65 63          bool Dec
15ea0 6c 61 72 65 64 20 7b 20 67 65 74 3b 20 7d 0d 0a  lared { get; }..
15eb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
15f10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15f20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
15f30 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
15f40 6d 6f 64 75 6c 65 20 61 73 20 69 74 20 77 61 73  module as it was
15f50 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74 68   registered with
15f60 20 74 68 65 20 53 51 4c 69 74 65 0d 0a 20 20 20   the SQLite..   
15f70 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65 20 6c 69       /// core li
15f80 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
15f90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
15fa0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 4e          string N
15fb0 61 6d 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a  ame { get; }....
15fc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16010 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16020 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16030 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
16040 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
16050 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
16060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
16070 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
16080 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
16090 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
160a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
160b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
160c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
160d0 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20  "connection">.. 
160e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
160f0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
16100 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f  Connection" /> o
16110 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
16120 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
16130 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
16140 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
16150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
16160 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
16170 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
16180 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20  ClientData">..  
16190 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
161a0 74 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70  tive user-data p
161b0 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65  ointer associate
161c0 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75  d with this modu
161d0 6c 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20  le, as it was.. 
161e0 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69         /// provi
161f0 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ded to the SQLit
16200 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77  e core library w
16210 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d  hen the native m
16220 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a  odule instance..
16230 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20          /// was 
16240 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  created...      
16250 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16260 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16270 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e  am name="argumen
16280 74 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ts">..        //
16290 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d  / The module nam
162a0 65 2c 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65  e, database name
162b0 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  , virtual table 
162c0 6e 61 6d 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74  name, and all ot
162d0 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  her..        ///
162e0 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
162f0 64 20 74 6f 20 74 68 65 20 43 52 45 41 54 45 20  d to the CREATE 
16300 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74  VIRTUAL TABLE st
16310 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  atement...      
16320 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16330 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16340 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
16350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
16360 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73  on success, this
16370 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
16380 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63  be modified to c
16390 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
163a0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
163b0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
163c0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
163d0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
163e0 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
163f0 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75     /// the virtu
16400 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
16410 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16430 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
16440 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
16450 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69  pon failure, thi
16460 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
16470 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
16480 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72  contain an error
16490 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
164a0 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20  ssage...        
164b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
164c0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
164d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
164e0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
164f0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
16500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
16510 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16520 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16530 20 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20   Create(..      
16540 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
16550 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
16560 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  n,  /* in */..  
16570 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
16580 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20   pClientData,   
16590 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
165a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
165b0 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
165c0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
165d0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
165e0 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74    ref SQLiteVirt
165f0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
16600 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
16610 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
16620 67 20 65 72 72 6f 72 20 20 20 20 20 20 20 20 20  g error         
16630 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
16640 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
16650 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
166b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
166c0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
166d0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
166e0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
166f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
16700 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
16710 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
16720 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
16730 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16740 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16750 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16760 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
16770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16780 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
16790 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
167a0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
167b0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
167c0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
167d0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
167e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
167f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
16800 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
16810 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
16820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
16830 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
16840 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
16850 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
16860 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73  odule, as it was
16870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
16880 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
16890 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
168a0 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
168b0 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63  e module instanc
168c0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
168d0 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20  as created...   
168e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
168f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16900 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75  param name="argu
16910 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20  ments">..       
16920 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20   /// The module 
16930 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20 6e  name, database n
16940 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61 62  ame, virtual tab
16950 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c 6c  le name, and all
16960 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20   other..        
16970 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70 61  /// arguments pa
16980 73 73 65 64 20 74 6f 20 74 68 65 20 43 52 45 41  ssed to the CREA
16990 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
169a0 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
169b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
169c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
169d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
169e0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
169f0 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
16a00 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
16a10 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
16a20 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
16a30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
16a40 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
16a50 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
16a60 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
16a70 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
16a80 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69        /// the vi
16a90 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
16aa0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16ab0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16ac0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
16ad0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
16ae0 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20  / Upon failure, 
16af0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
16b00 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
16b10 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72  to contain an er
16b20 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ror..        ///
16b30 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20   message...     
16b40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
16b60 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
16b70 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
16b80 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
16b90 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
16ba0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
16bb0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
16bc0 6f 64 65 20 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  ode Connect(..  
16bd0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
16be0 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
16bf0 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f  ction,  /* in */
16c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
16c10 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
16c20 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
16c30 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
16c40 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
16c50 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20 20  ents,           
16c60 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
16c70 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
16c80 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
16c90 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  le, /* out */.. 
16ca0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73             ref s
16cb0 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
16cc0 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
16cd0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
16ce0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
16cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
16d40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
16d60 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
16d70 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
16d80 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16d90 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
16da0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
16db0 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  .xBestIndex" /> 
16dc0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
16dd0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16de0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16df0 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
16e00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16e10 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
16e20 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
16e30 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
16e40 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
16e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
16e60 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
16e70 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
16e80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16e90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
16ea0 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
16eb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
16ec0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
16ed0 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74  Index" /> object
16ee0 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69   instance contai
16ef0 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20  ning all the..  
16f00 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66        /// data f
16f10 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e  or the inputs an
16f20 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69  d outputs relati
16f30 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c 65  ng to index sele
16f40 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
16f50 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16f60 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
16f70 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
16f80 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
16f90 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
16fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
16fb0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16fc0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16fd0 20 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20   BestIndex(..   
16fe0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
16ff0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
17000 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  e, /* in */..   
17010 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
17020 6e 64 65 78 20 69 6e 64 65 78 20 20 20 20 20 20  ndex index      
17030 20 20 20 2f 2a 20 69 6e 2c 20 6f 75 74 20 2a 2f     /* in, out */
17040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
17050 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
17060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
170b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
170c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
170d0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
170e0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
170f0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
17100 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
17110 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
17120 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
17130 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
17140 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17160 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
17170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17180 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
17190 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
171a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
171b0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
171c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
171d0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
171e0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
171f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17200 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17210 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17220 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17230 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
17250 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
17260 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44  QLiteErrorCode D
17270 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
17280 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
17290 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
172a0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
172b0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
172c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
172d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17310 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
17320 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17330 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
17340 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
17350 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
17360 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
17370 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
17380 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
17390 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
173a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
173b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
173c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
173d0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
173e0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
173f0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
17400 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
17410 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
17420 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
17430 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
17440 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
17450 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
17460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
17470 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
17480 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
17490 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
174a0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
174b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
174c0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
174d0 43 6f 64 65 20 44 65 73 74 72 6f 79 28 0d 0a 20  Code Destroy(.. 
174e0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
174f0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
17500 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ble /* in */..  
17510 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17520 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17570 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17580 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17590 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
175a0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
175b0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
175c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
175d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
175e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
175f0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
17600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17610 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17620 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
17630 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
17640 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
17650 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
17660 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
17670 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
17680 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
17690 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
176a0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
176b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
176c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
176d0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
176e0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
176f0 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
17700 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
17710 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
17720 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
17730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
17740 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
17750 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
17760 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
17770 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
17780 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
17790 74 68 65 20 6e 65 77 6c 79 20 6f 70 65 6e 65 64  the newly opened
177a0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
177b0 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  ursor...        
177c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
177d0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
177e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
177f0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
17800 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
17810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
17820 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
17830 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17840 20 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20   Open(..        
17850 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
17860 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 20 20  lTable table,   
17870 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
17880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
17890 66 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f SQLiteVirtualT
178a0 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
178b0 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20  r /* out */..   
178c0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
178d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
178e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
17930 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
17940 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
17950 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
17960 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
17970 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
17980 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
17990 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
179a0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
179b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
179c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
179d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
179e0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
179f0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
17a00 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
17a10 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
17a20 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
17a30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
17a40 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
17a50 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  e previously ope
17a60 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
17a70 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a  e cursor to be..
17a80 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
17a90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17aa0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
17ab0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
17ac0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
17ad0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
17ae0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
17af0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
17b00 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
17b10 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6c 6f 73  teErrorCode Clos
17b20 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
17b30 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
17b40 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20  leCursor cursor 
17b50 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
17b60 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
17b70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17bc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
17bd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17be0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
17bf0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
17c00 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
17c10 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
17c20 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
17c30 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
17c40 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
17c50 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17c60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
17c70 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
17c80 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
17c90 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
17ca0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
17cb0 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
17cc0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a  bject instance..
17cd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
17ce0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
17cf0 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65  previously opene
17d00 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
17d10 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20  cursor to be..  
17d20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d        /// used..
17d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17d40 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17d50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17d60 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d 0a 20  indexNumber">.. 
17d70 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65         /// Numbe
17d80 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  r used to help i
17d90 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
17da0 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
17db0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17dc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17dd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
17de0 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20 20 20  xString">..     
17df0 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73     /// String us
17e00 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
17e10 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
17e20 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
17e30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
17e40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
17e50 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e  m name="values">
17e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17e70 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65 73 70  e values corresp
17e80 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68 20 63  onding to each c
17e90 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73 65 6c  olumn in the sel
17ea0 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20  ected index...  
17eb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17ec0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17ed0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
17ee0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
17ef0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
17f00 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
17f10 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
17f20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
17f30 6f 72 43 6f 64 65 20 46 69 6c 74 65 72 28 0d 0a  orCode Filter(..
17f40 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
17f50 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
17f60 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20  rsor cursor, /* 
17f70 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
17f80 20 20 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62     int indexNumb
17f90 65 72 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  er,             
17fa0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
17fb0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
17fc0 20 69 6e 64 65 78 53 74 72 69 6e 67 2c 20 20 20   indexString,   
17fd0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
17fe0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
17ff0 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76   SQLiteValue[] v
18000 61 6c 75 65 73 20 20 20 20 20 20 20 20 20 20 20  alues           
18010 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
18020 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
18030 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
18090 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
180a0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
180b0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
180c0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
180d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
180e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
180f0 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20  veModule.xNext" 
18100 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
18110 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
18120 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18130 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
18140 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
18150 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
18160 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
18170 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
18180 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a  bject instance..
18190 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
181a0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
181b0 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65  previously opene
181c0 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
181d0 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20  cursor to be..  
181e0 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d        /// used..
181f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
18200 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
18210 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
18220 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
18230 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
18240 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
18250 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
18260 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
18270 45 72 72 6f 72 43 6f 64 65 20 4e 65 78 74 28 0d  ErrorCode Next(.
18280 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
18290 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
182a0 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20  ursor cursor /* 
182b0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
182c0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
182d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
182e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18320 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
18330 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18340 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
18350 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
18360 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
18370 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
18380 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
18390 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74  ule.xEof" /> met
183a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
183b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
183c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
183d0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
183e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
183f0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18400 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18410 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
18420 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
18430 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
18440 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
18450 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
18460 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
18470 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
18480 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
18490 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
184a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
184b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
184c0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
184d0 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61 72 65  no more rows are
184e0 20 61 76 61 69 6c 61 62 6c 65 3b 20 7a 65 72 6f   available; zero
184f0 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
18500 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
18510 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f  ns>..        boo
18520 6c 20 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  l Eof(..        
18530 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
18540 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
18550 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  sor /* in */..  
18560 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
18570 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
185c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
185d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
185e0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
185f0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
18600 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
18610 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
18620 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
18630 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75  tiveModule.xColu
18640 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  mn" /> method...
18650 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
18660 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
18670 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
18680 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
18690 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
186a0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
186b0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
186c0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
186d0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
186e0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
186f0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
18700 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
18710 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
18720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
18730 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
18740 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18750 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
18760 6d 65 3d 22 63 6f 6e 74 65 78 74 22 3e 0d 0a 20  me="context">.. 
18770 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
18780 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
18790 43 6f 6e 74 65 78 74 22 20 2f 3e 20 6f 62 6a 65  Context" /> obje
187a0 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62  ct instance to b
187b0 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20 20 20  e used for..    
187c0 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 69 6e      /// returnin
187d0 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
187e0 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 20 74 6f 20  column value to 
187f0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
18800 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
18810 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18830 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
18840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18850 65 20 7a 65 72 6f 2d 62 61 73 65 64 20 69 6e 64  e zero-based ind
18860 65 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ex corresponding
18870 20 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 20 63   to the column c
18880 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20  ontaining the.. 
18890 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
188a0 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2e   to be returned.
188b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
188c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
188d0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
188e0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
188f0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
18900 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
18910 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
18920 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
18930 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6c 75 6d  eErrorCode Colum
18940 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
18950 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
18960 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c  leCursor cursor,
18970 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
18980 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
18990 74 65 78 74 20 63 6f 6e 74 65 78 74 2c 20 20 20  text context,   
189a0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
189b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
189c0 74 20 69 6e 64 65 78 20 20 20 20 20 20 20 20 20  t index         
189d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
189e0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
189f0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
18a00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18a50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
18a60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
18a70 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
18a80 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
18a90 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
18aa0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
18ab0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
18ac0 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e  odule.xRowId" />
18ad0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
18ae0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
18b00 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
18b10 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
18b20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
18b30 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
18b40 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
18b50 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
18b60 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
18b70 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
18b80 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
18b90 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
18ba0 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
18bb0 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
18bc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18bd0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18be0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f   <param name="ro
18bf0 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  wId">..        /
18c00 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
18c10 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
18c20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
18c30 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20   to contain the 
18c40 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20 20  unique..        
18c50 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77 20  /// integer row 
18c60 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74  identifier for t
18c70 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 20 66  he current row f
18c80 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
18c90 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20   cursor...      
18ca0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
18cc0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
18cd0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
18ce0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
18cf0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18d00 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
18d10 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
18d20 64 65 20 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  de RowId(..     
18d30 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
18d40 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
18d50 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f  cursor, /* in */
18d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
18d70 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20 20 20 20  f long rowId    
18d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18d90 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
18da0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
18db0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18e00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18e10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18e20 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
18e30 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
18e40 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
18e50 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
18e60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
18e70 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
18e80 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
18e90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
18ea0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18eb0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
18ec0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
18ed0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
18ee0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
18ef0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
18f00 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
18f10 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
18f20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
18f30 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
18f40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18f50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18f60 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22  am name="values"
18f70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18f80 68 65 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65  he array of <see
18f90 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c   cref="SQLiteVal
18fa0 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ue" /> object in
18fb0 73 74 61 6e 63 65 73 20 63 6f 6e 74 61 69 6e 69  stances containi
18fc0 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
18fd0 74 68 65 20 6e 65 77 20 6f 72 20 6d 6f 64 69 66  the new or modif
18fe0 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  ied column value
18ff0 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  s, if any...    
19000 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19010 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19020 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64  aram name="rowId
19030 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
19040 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
19050 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
19060 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
19070 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69   contain the uni
19080 71 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  que..        ///
19090 20 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65   integer row ide
190a0 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20  ntifier for the 
190b0 72 6f 77 20 74 68 61 74 20 77 61 73 20 69 6e 73  row that was ins
190c0 65 72 74 65 64 2c 20 69 66 20 61 6e 79 2e 0d 0a  erted, if any...
190d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
190e0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
190f0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19100 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
19110 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
19120 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
19130 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
19140 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
19150 72 72 6f 72 43 6f 64 65 20 55 70 64 61 74 65 28  rrorCode Update(
19160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
19170 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
19180 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f   table, /* in */
19190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
191a0 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
191b0 65 73 2c 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  es,     /* in */
191c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
191d0 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20 20 20 20  f long rowId    
191e0 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a          /* out *
191f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
19200 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
19210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19250 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19260 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
19270 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
19280 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
19290 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
192a0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
192b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
192c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
192d0 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
192e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
192f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
19300 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19310 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
19320 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
19330 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
19340 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
19350 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
19360 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
19370 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
19380 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
19390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
193a0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
193b0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
193c0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
193d0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
193e0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
193f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
19400 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
19410 65 45 72 72 6f 72 43 6f 64 65 20 42 65 67 69 6e  eErrorCode Begin
19420 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
19430 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
19440 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
19450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
19460 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
19470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
194c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
194d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
194e0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
194f0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
19500 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
19510 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
19520 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
19530 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Sync" /> method.
19540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19550 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
19560 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19570 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
19580 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
19590 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
195a0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
195b0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
195c0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
195d0 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
195e0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
195f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19600 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
19610 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19620 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
19630 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
19640 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
19650 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
19660 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
19670 72 72 6f 72 43 6f 64 65 20 53 79 6e 63 28 0d 0a  rrorCode Sync(..
19680 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
19690 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
196a0 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
196b0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
196c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
196d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
19720 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
19730 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
19740 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
19750 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
19760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
19770 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
19780 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d  ativeModule.xCom
19790 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  mit" /> method..
197a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
197b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
197c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
197d0 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
197e0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
197f0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
19800 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
19810 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
19820 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
19830 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
19840 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
19850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19860 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19870 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
19880 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
19890 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
198a0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
198b0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
198c0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
198d0 72 6f 72 43 6f 64 65 20 43 6f 6d 6d 69 74 28 0d  rorCode Commit(.
198e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
198f0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
19900 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  table /* in */..
19910 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
19920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19970 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
19980 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
19990 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
199a0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
199b0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
199c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
199d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
199e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
199f0 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f  llback" /> metho
19a00 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
19a10 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
19a20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19a30 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
19a40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
19a50 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
19a60 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
19a70 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
19a80 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
19a90 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
19aa0 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
19ab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19ac0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
19ad0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
19ae0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
19af0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
19b00 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
19b10 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
19b20 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
19b30 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62  eErrorCode Rollb
19b40 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
19b50 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
19b60 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
19b70 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19b80 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
19b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19be0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
19bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
19c00 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
19c10 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
19c20 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
19c30 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
19c40 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
19c50 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
19c60 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
19c70 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
19c80 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
19c90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
19ca0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
19cb0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
19cc0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
19cd0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
19ce0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
19cf0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
19d00 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
19d10 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
19d20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19d40 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65  ram name="argume
19d50 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 20  ntCount">..     
19d60 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
19d70 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74  r of arguments t
19d80 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62  o the function b
19d90 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20  eing sought...  
19da0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19db0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
19dc0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
19dd0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
19de0 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
19df0 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20   function being 
19e00 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20  sought...       
19e10 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19e20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19e30 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  m name="function
19e40 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
19e50 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
19e60 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
19e70 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
19e80 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
19e90 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
19ea0 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74  ref="SQLiteFunct
19eb0 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ion" /> object i
19ec0 6e 73 74 61 6e 63 65 20 72 65 73 70 6f 6e 73 69  nstance responsi
19ed0 62 6c 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  ble for..       
19ee0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 69 6e   /// implementin
19ef0 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
19f00 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
19f10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19f30 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e  ram name="pClien
19f40 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  tData">..       
19f50 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
19f60 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
19f70 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
19f80 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
19f90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  e..        /// n
19fa0 61 74 69 76 65 20 75 73 65 72 2d 64 61 74 61 20  ative user-data 
19fb0 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74  pointer associat
19fc0 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
19fd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
19fe0 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 20 2f  ame="function" /
19ff0 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  >...        /// 
1a000 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1a010 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1a020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
1a030 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 70 65  -zero if the spe
1a040 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f 6e 20  cified function 
1a050 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65 72 6f 20  was found; zero 
1a060 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
1a070 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1a080 73 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  s>..        bool
1a090 20 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a   FindFunction(..
1a0a0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1a0b0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1a0c0 61 62 6c 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a  able,    /* in *
1a0d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  /..            i
1a0e0 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74  nt argumentCount
1a0f0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
1a100 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1a110 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20    string name,  
1a120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1a130 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1a140 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 46       ref SQLiteF
1a150 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  unction function
1a160 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20  , /* out */..   
1a170 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
1a180 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 20  Ptr pClientData 
1a190 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
1a1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1a1b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a200 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1a210 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1a220 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1a230 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
1a240 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
1a250 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1a260 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1a270 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
1a280 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
1a290 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a2a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1a2b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a2c0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
1a2d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1a2e0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1a2f0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1a300 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1a310 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1a320 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
1a330 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
1a340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a350 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1a360 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1a370 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  newName">..     
1a380 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e     /// The new n
1a390 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ame for the virt
1a3a0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a3b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a3c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1a3d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a3e0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1a3f0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1a400 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1a410 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a420 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a430 43 6f 64 65 20 52 65 6e 61 6d 65 28 0d 0a 20 20  Code Rename(..  
1a440 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1a450 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1a460 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
1a470 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1a480 20 6e 65 77 4e 61 6d 65 20 20 20 20 20 20 20 20   newName        
1a490 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1a4a0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
1a4b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1a4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1a500 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a510 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1a520 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1a530 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
1a540 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
1a550 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1a560 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
1a570 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
1a580 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
1a590 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a5a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1a5b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a5c0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
1a5d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1a5e0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1a5f0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1a600 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1a610 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1a620 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
1a630 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
1a640 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a650 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1a660 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1a670 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20  savepoint">..   
1a680 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
1a690 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65 6e   an integer iden
1a6a0 74 69 66 69 65 72 20 75 6e 64 65 72 20 77 68 69  tifier under whi
1a6b0 63 68 20 74 68 65 20 74 68 65 20 63 75 72 72 65  ch the the curre
1a6c0 6e 74 20 73 74 61 74 65 20 6f 66 0d 0a 20 20 20  nt state of..   
1a6d0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72       /// the vir
1a6e0 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c  tual table shoul
1a6f0 64 20 62 65 20 73 61 76 65 64 2e 0d 0a 20 20 20  d be saved...   
1a700 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1a710 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a720 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1a730 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1a740 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1a750 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1a760 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1a770 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1a780 72 43 6f 64 65 20 53 61 76 65 70 6f 69 6e 74 28  rCode Savepoint(
1a790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1a7a0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1a7b0 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f   table, /* in */
1a7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
1a7d0 74 20 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20  t savepoint     
1a7e0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1a7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1a800 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a850 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1a860 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1a870 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1a880 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1a890 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1a8a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a8b0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1a8c0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1a8d0 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68  Release" /> meth
1a8e0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1a8f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1a900 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1a910 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1a920 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1a930 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1a940 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1a950 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1a960 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1a970 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1a980 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1a990 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a9a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1a9b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1a9c0 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  ="savepoint">.. 
1a9d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1a9e0 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 75 73  is an integer us
1a9f0 65 64 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74  ed to indicate t
1aa00 68 61 74 20 61 6e 79 20 73 61 76 65 64 20 73 74  hat any saved st
1aa10 61 74 65 73 20 77 69 74 68 20 61 6e 0d 0a 20 20  ates with an..  
1aa20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65 6e 74 69        /// identi
1aa30 66 69 65 72 20 67 72 65 61 74 65 72 20 74 68 61  fier greater tha
1aa40 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 74 68  n or equal to th
1aa50 69 73 20 73 68 6f 75 6c 64 20 62 65 20 64 65 6c  is should be del
1aa60 65 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  eted by the..   
1aa70 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c       /// virtual
1aa80 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
1aa90 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1aaa0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1aab0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1aac0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1aad0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1aae0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1aaf0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1ab00 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1ab10 65 20 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20  e Release(..    
1ab20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1ab30 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1ab40 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
1ab50 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76 65          int save
1ab60 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20 20  point           
1ab70 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1ab80 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1ab90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1abe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1abf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1ac00 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1ac10 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1ac20 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1ac30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1ac40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1ac50 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
1ac60 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ckTo" /> method.
1ac70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ac80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1ac90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1aca0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
1acb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1acc0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1acd0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
1ace0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1acf0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
1ad00 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
1ad10 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1ad20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1ad30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1ad40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
1ad50 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
1ad60 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
1ad70 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74  an integer ident
1ad80 69 66 69 65 72 20 75 73 65 64 20 74 6f 20 73 70  ifier used to sp
1ad90 65 63 69 66 79 20 61 20 73 70 65 63 69 66 69 63  ecify a specific
1ada0 20 73 61 76 65 64 0d 0a 20 20 20 20 20 20 20 20   saved..        
1adb0 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72 20 74 68  /// state for th
1adc0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
1add0 66 6f 72 20 69 74 20 74 6f 20 72 65 73 74 6f 72  for it to restor
1ade0 65 20 69 74 73 65 6c 66 20 62 61 63 6b 20 74 6f  e itself back to
1adf0 2c 20 77 68 69 63 68 0d 0a 20 20 20 20 20 20 20  , which..       
1ae00 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61 6c 73 6f   /// should also
1ae10 20 68 61 76 65 20 74 68 65 20 65 66 66 65 63 74   have the effect
1ae20 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 61 6c 6c   of deleting all
1ae30 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77 69   saved states wi
1ae40 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  th an..        /
1ae50 2f 2f 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74  // integer ident
1ae60 69 66 69 65 72 20 67 72 65 61 74 65 72 20 74 68  ifier greater th
1ae70 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d 0a 20 20  an this one...  
1ae80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ae90 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1aea0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1aeb0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1aec0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1aed0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1aee0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1aef0 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1af00 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 54  orCode RollbackT
1af10 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
1af20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1af30 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20  le table, /* in 
1af40 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1af50 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 20 20  int savepoint   
1af60 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
1af70 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1af80 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
1af90 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1afa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1aff0 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
1b000 74 65 4d 65 6d 6f 72 79 20 53 74 61 74 69 63 20  teMemory Static 
1b010 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
1b020 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1b030 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e  / This class con
1b040 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74  tains static met
1b050 68 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73  hods that are us
1b060 65 64 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2c 0d  ed to allocate,.
1b070 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 69 70 75 6c  .    /// manipul
1b080 61 74 65 2c 20 61 6e 64 20 66 72 65 65 20 6e 61  ate, and free na
1b090 74 69 76 65 20 6d 65 6d 6f 72 79 20 70 72 6f 76  tive memory prov
1b0a0 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  ided by the SQLi
1b0b0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
1b0c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1b0d0 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
1b0e0 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20  al static class 
1b0f0 53 51 4c 69 74 65 4d 65 6d 6f 72 79 0d 0a 20 20  SQLiteMemory..  
1b100 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
1b110 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
1b120 61 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d  a..#if TRACK_MEM
1b130 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20  ORY_BYTES..     
1b140 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b160 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
1b170 63 65 20 69 73 20 75 73 65 64 20 74 6f 20 73 79  ce is used to sy
1b180 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63 65 73 73  nchronize access
1b190 20 74 6f 20 74 68 65 20 6f 74 68 65 72 0d 0a 20   to the other.. 
1b1a0 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 69         /// stati
1b1b0 63 20 66 69 65 6c 64 73 20 6f 66 20 74 68 69 73  c fields of this
1b1c0 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
1b1d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1b1e0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1b1f0 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 73   static object s
1b200 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
1b210 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ject();....     
1b220 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b270 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b280 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b290 20 54 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   The total numbe
1b2a0 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e 67  r of outstanding
1b2b0 20 6d 65 6d 6f 72 79 20 62 79 74 65 73 20 61 6c   memory bytes al
1b2c0 6c 6f 63 61 74 65 64 20 62 79 20 74 68 69 73 0d  located by this.
1b2d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6c 61  .        /// cla
1b2e0 73 73 20 75 73 69 6e 67 20 74 68 65 20 53 51 4c  ss using the SQL
1b2f0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1b300 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b310 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1b320 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1b330 63 20 69 6e 74 20 62 79 74 65 73 41 6c 6c 6f 63  c int bytesAlloc
1b340 61 74 65 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ated;....       
1b350 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b390 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1b3a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1b3b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b3c0 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
1b3d0 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e 67  r of outstanding
1b3e0 20 6d 65 6d 6f 72 79 20 62 79 74 65 73 20 65 76   memory bytes ev
1b3f0 65 72 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 0d  er allocated by.
1b400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
1b410 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  s class using th
1b420 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1b430 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
1b440 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b450 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1b460 73 74 61 74 69 63 20 69 6e 74 20 6d 61 78 69 6d  static int maxim
1b470 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  umBytesAllocated
1b480 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1b490 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1b4a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
1b500 69 6f 6e 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63  ion Memory Alloc
1b510 61 74 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74  ation Helper Met
1b520 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
1b530 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1b540 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74       /// Allocat
1b550 65 73 20 61 74 20 6c 65 61 73 74 20 74 68 65 20  es at least the 
1b560 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72  specified number
1b570 20 6f 66 20 62 79 74 65 73 20 6f 66 20 6e 61 74   of bytes of nat
1b580 69 76 65 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ive memory..    
1b590 20 20 20 20 2f 2f 2f 20 76 69 61 20 74 68 65 20      /// via the 
1b5a0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1b5b0 61 72 79 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  ary sqlite3_mall
1b5c0 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6e  oc() function an
1b5d0 64 20 72 65 74 75 72 6e 73 0d 0a 20 20 20 20 20  d returns..     
1b5e0 20 20 20 2f 2f 2f 20 74 68 65 20 72 65 73 75 6c     /// the resul
1b5f0 74 69 6e 67 20 6e 61 74 69 76 65 20 70 6f 69 6e  ting native poin
1b600 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
1b610 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1b620 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1b630 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20   name="size">.. 
1b640 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1b650 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74  umber of bytes t
1b660 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a 20 20 20  o allocate...   
1b670 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1b680 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b690 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1b6a0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1b6b0 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 70 6f   pointer that po
1b6c0 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f 63 6b 20  ints to a block 
1b6d0 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20  of memory of at 
1b6e0 6c 65 61 73 74 20 74 68 65 0d 0a 20 20 20 20 20  least the..     
1b6f0 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64     /// specified
1b700 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73 65 65 20   size -OR- <see 
1b710 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
1b720 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 6d  o" /> if the mem
1b730 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20 20 20 20  ory could..     
1b740 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65 20 61 6c     /// not be al
1b750 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
1b760 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1b770 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b780 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 41   static IntPtr A
1b790 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73 69 7a 65  llocate(int size
1b7a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1b7b0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1b7c0 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e 73 61 66   pMemory = Unsaf
1b7d0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
1b7e0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 73 69  qlite3_malloc(si
1b7f0 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54 52 41 43  ze);....#if TRAC
1b800 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a  K_MEMORY_BYTES..
1b810 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b820 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74  pMemory != IntPt
1b830 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1b840 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b850 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c 6f 63          int bloc
1b860 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65  kSize = Size(pMe
1b870 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mory);....      
1b880 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6c            if (bl
1b890 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20  ockSize > 0)..  
1b8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b8b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b8c0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1b8d0 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1b8e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1b8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b900 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f 63 61       bytesAlloca
1b910 74 65 64 20 2b 3d 20 62 6c 6f 63 6b 53 69 7a 65  ted += blockSize
1b920 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b930 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b940 28 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20  (bytesAllocated 
1b950 3e 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c  > maximumBytesAl
1b960 6c 6f 63 61 74 65 64 29 0d 0a 20 20 20 20 20 20  located)..      
1b970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b980 20 20 20 20 20 20 6d 61 78 69 6d 75 6d 42 79 74        maximumByt
1b990 65 73 41 6c 6c 6f 63 61 74 65 64 20 3d 20 62 79  esAllocated = by
1b9a0 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 20  tesAllocated;.. 
1b9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1b9d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b9e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1b9f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1ba00 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b 0d 0a 20  turn pMemory;.. 
1ba10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ba20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ba30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1ba70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1ba80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1ba90 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72  / Gets and retur
1baa0 6e 73 20 74 68 65 20 61 63 74 75 61 6c 20 73 69  ns the actual si
1bab0 7a 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ze of the specif
1bac0 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  ied memory block
1bad0 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f   that..        /
1bae0 2f 2f 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c  // was previousl
1baf0 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1bb00 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 41  the <see cref="A
1bb10 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68  llocate" /> meth
1bb20 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1bb30 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1bb40 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1bb50 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d  name="pMemory">.
1bb60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1bb70 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1bb80 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c  to the memory bl
1bb90 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  ock previously o
1bba0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
1bbb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1bbc0 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1bbd0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1bbe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1bbf0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1bc00 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1bc10 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74 75      /// The actu
1bc20 61 6c 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65  al size, in byte
1bc30 73 2c 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79  s, of the memory
1bc40 20 62 6c 6f 63 6b 20 73 70 65 63 69 66 69 65 64   block specified
1bc50 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20 20 20   via the..      
1bc60 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69    /// native poi
1bc70 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nter...        /
1bc80 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1bc90 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1bca0 61 74 69 63 20 69 6e 74 20 53 69 7a 65 28 49 6e  atic int Size(In
1bcb0 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20  tPtr pMemory).. 
1bcc0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53         {..#if !S
1bcd0 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1bce0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bcf0 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  rn UnsafeNativeM
1bd00 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
1bd10 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72  alloc_size_inter
1bd20 6f 70 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 23 65  op(pMemory);..#e
1bd30 6c 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59  lif TRACK_MEMORY
1bd40 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20  _BYTES..        
1bd50 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1bd60 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f 6b 2c      // HACK: Ok,
1bd70 20 77 65 20 63 61 6e 6e 6f 74 20 64 65 74 65 72   we cannot deter
1bd80 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f 66  mine the size of
1bd90 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63   the memory bloc
1bda0 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
1bdb0 2f 2f 20 20 20 20 20 20 20 74 68 65 72 65 66 6f  //       therefo
1bdc0 72 65 2c 20 6a 75 73 74 20 74 72 61 63 6b 20 6e  re, just track n
1bdd0 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f 63 61 74  umber of allocat
1bde0 69 6f 6e 73 20 69 6e 73 74 65 61 64 2e 0d 0a 20  ions instead... 
1bdf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1be00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1be10 6e 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e  n (pMemory != In
1be20 74 50 74 72 2e 5a 65 72 6f 29 20 3f 20 31 20 3a  tPtr.Zero) ? 1 :
1be30 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   0;..#else..    
1be40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30          return 0
1be50 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1be60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1beb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1bec0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1bed0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72  ..        /// Fr
1bee0 65 65 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c 6f  ees a memory blo
1bef0 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62  ck previously ob
1bf00 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d  tained from the.
1bf10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1bf20 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65  e cref="Allocate
1bf30 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1bf40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1bf50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1bf60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1bf70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  Memory">..      
1bf80 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1bf90 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
1bfa0 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65  memory block pre
1bfb0 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64  viously obtained
1bfc0 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
1bfd0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1bfe0 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d  ="Allocate" /> m
1bff0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1c000 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1c010 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1c020 74 69 63 20 76 6f 69 64 20 46 72 65 65 28 49 6e  tic void Free(In
1c030 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20  tPtr pMemory).. 
1c040 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 52         {..#if TR
1c050 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53  ACK_MEMORY_BYTES
1c060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1c070 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74   (pMemory != Int
1c080 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1c090 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c0a0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c            int bl
1c0b0 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70  ockSize = Size(p
1c0c0 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  Memory);....    
1c0d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c0e0 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a  blockSize > 0)..
1c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c100 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c110 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1c120 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
1c130 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c150 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f         bytesAllo
1c160 63 61 74 65 64 20 2d 3d 20 62 6c 6f 63 6b 53 69  cated -= blockSi
1c170 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze;..           
1c180 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1c190 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1c1a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1c1b0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1c1c0 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
1c1d0 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
1c1e0 66 72 65 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a  free(pMemory);..
1c1f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c200 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
1c210 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
1c220 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
1c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c270 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1c280 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 72  region SQLiteStr
1c290 69 6e 67 20 53 74 61 74 69 63 20 43 6c 61 73 73  ing Static Class
1c2a0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1c2b0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
1c2c0 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73  s class contains
1c2d0 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20   static methods 
1c2e0 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f  that are used to
1c2f0 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69 76   deal with nativ
1c300 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38  e..    /// UTF-8
1c310 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73   string pointers
1c320 20 74 6f 20 62 65 20 75 73 65 64 20 77 69 74 68   to be used with
1c330 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1c340 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f   library...    /
1c350 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1c360 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c370 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ic class SQLiteS
1c380 74 72 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20  tring..    {..  
1c390 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
1c3a0 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
1c3b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1c3c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c3d0 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
1c3e0 6d 61 78 69 6d 75 6d 20 70 6f 73 73 69 62 6c 65  maximum possible
1c3f0 20 6c 65 6e 67 74 68 20 66 6f 72 20 74 68 65 20   length for the 
1c400 6e 61 74 69 76 65 20 55 54 46 2d 38 20 65 6e 63  native UTF-8 enc
1c410 6f 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  oded..        //
1c420 2f 20 73 74 72 69 6e 67 73 20 75 73 65 64 20 77  / strings used w
1c430 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
1c440 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1c450 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1c460 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
1c470 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74  ivate static int
1c480 20 54 68 69 72 74 79 42 69 74 73 20 3d 20 30 78   ThirtyBits = 0x
1c490 33 66 66 66 66 66 66 66 3b 0d 0a 0d 0a 20 20 20  3fffffff;....   
1c4a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c4f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1c500 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c510 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 3c  // This is the <
1c520 73 65 65 20 63 72 65 66 3d 22 45 6e 63 6f 64 69  see cref="Encodi
1c530 6e 67 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ng" /> object in
1c540 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 68  stance used to h
1c550 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  andle..        /
1c560 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 66  // conversions f
1c570 72 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e 0d 0a 20  rom/to UTF-8... 
1c580 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1c590 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
1c5a0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
1c5b0 61 64 6f 6e 6c 79 20 45 6e 63 6f 64 69 6e 67 20  adonly Encoding 
1c5c0 55 74 66 38 45 6e 63 6f 64 69 6e 67 20 3d 20 45  Utf8Encoding = E
1c5d0 6e 63 6f 64 69 6e 67 2e 55 54 46 38 3b 0d 0a 20  ncoding.UTF8;.. 
1c5e0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
1c5f0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
1c600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c640 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c650 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 45 6e  #region UTF-8 En
1c660 63 6f 64 69 6e 67 20 48 65 6c 70 65 72 20 4d 65  coding Helper Me
1c670 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
1c680 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1c690 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
1c6a0 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
1c6b0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
1c6c0 69 6e 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  into the UTF-8 e
1c6d0 6e 63 6f 64 69 6e 67 20 61 6e 64 0d 0a 20 20 20  ncoding and..   
1c6e0 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73       /// returns
1c6f0 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 62 79   the array of by
1c700 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69  tes containing i
1c710 74 73 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  ts representatio
1c720 6e 20 69 6e 20 74 68 61 74 0d 0a 20 20 20 20 20  n in that..     
1c730 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 69 6e 67 2e     /// encoding.
1c740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c750 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1c760 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c770 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
1c780 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61      /// The mana
1c790 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f  ged string to co
1c7a0 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1c7b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1c7c0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1c7d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1c7e0 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 62 79   The array of by
1c7f0 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  tes containing t
1c800 68 65 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  he representatio
1c810 6e 20 6f 66 20 74 68 65 20 6d 61 6e 61 67 65 64  n of the managed
1c820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1c830 72 69 6e 67 20 69 6e 20 74 68 65 20 55 54 46 2d  ring in the UTF-
1c840 38 20 65 6e 63 6f 64 69 6e 67 20 6f 72 20 6e 75  8 encoding or nu
1c850 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
1c860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c870 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1c880 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1c890 62 79 74 65 5b 5d 20 47 65 74 55 74 66 38 42 79  byte[] GetUtf8By
1c8a0 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  tesFromString(..
1c8b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1c8c0 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
1c8d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1c8e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c8f0 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
1c900 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1c910 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
1c920 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c930 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64  return Utf8Encod
1c940 69 6e 67 2e 47 65 74 42 79 74 65 73 28 76 61 6c  ing.GetBytes(val
1c950 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
1c960 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1c9c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1c9d0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1c9e0 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1c9f0 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 72  array of bytes r
1ca00 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 73 74  epresenting a st
1ca10 72 69 6e 67 20 69 6e 20 74 68 65 0d 0a 20 20 20  ring in the..   
1ca20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 65       /// UTF-8 e
1ca30 6e 63 6f 64 69 6e 67 20 61 6e 64 20 72 65 74 75  ncoding and retu
1ca40 72 6e 73 20 61 20 6d 61 6e 61 67 65 64 20 73 74  rns a managed st
1ca50 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ring...        /
1ca60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1ca70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ca80 6d 20 6e 61 6d 65 3d 22 62 79 74 65 73 22 3e 0d  m name="bytes">.
1ca90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1caa0 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
1cab0 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
1cac0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1cad0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1cae0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1caf0 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
1cb00 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c  d string or null
1cb10 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1cb20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1cb30 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1cb40 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1cb50 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 46 72  ring GetStringFr
1cb60 6f 6d 55 74 66 38 42 79 74 65 73 28 0d 0a 20 20  omUtf8Bytes(..  
1cb70 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
1cb80 20 62 79 74 65 73 0d 0a 20 20 20 20 20 20 20 20   bytes..        
1cb90 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
1cba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1cbb0 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29   (bytes == null)
1cbc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cbd0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
1cbe0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1cbf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cc00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1cc10 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e  turn Utf8Encodin
1cc20 67 2e 47 65 74 53 74 72 69 6e 67 28 62 79 74 65  g.GetString(byte
1cc30 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  s);..#else..    
1cc40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
1cc50 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53  tf8Encoding.GetS
1cc60 74 72 69 6e 67 28 62 79 74 65 73 2c 20 30 2c 20  tring(bytes, 0, 
1cc70 62 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a  bytes.Length);..
1cc80 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1cc90 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1cca0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1ccb0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccf0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cd00 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d      #region UTF-
1cd10 38 20 53 74 72 69 6e 67 20 48 65 6c 70 65 72 20  8 String Helper 
1cd20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
1cd30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1cd40 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 62          /// Prob
1cd50 65 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e  es a native poin
1cd60 74 65 72 20 74 6f 20 61 20 73 74 72 69 6e 67 20  ter to a string 
1cd70 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63  in the UTF-8 enc
1cd80 6f 64 69 6e 67 20 66 6f 72 20 69 74 73 0d 0a 20  oding for its.. 
1cd90 20 20 20 20 20 20 20 2f 2f 2f 20 74 65 72 6d 69         /// termi
1cda0 6e 61 74 69 6e 67 20 4e 55 4c 20 63 68 61 72 61  nating NUL chara
1cdb0 63 74 65 72 2c 20 77 69 74 68 69 6e 20 74 68 65  cter, within the
1cdc0 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74   specified lengt
1cdd0 68 20 6c 69 6d 69 74 2e 0d 0a 20 20 20 20 20 20  h limit...      
1cde0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1cdf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ce00 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75  aram name="pValu
1ce10 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1ce20 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d   The native NUL-
1ce30 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e  terminated strin
1ce40 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20  g pointer...    
1ce50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1ce60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ce70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 69 6d 69 74  aram name="limit
1ce80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1ce90 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67  The maximum leng
1cea0 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  th of the native
1ceb0 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65   string, in byte
1cec0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1ced0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1cee0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1cef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1cf00 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e   length of the n
1cf10 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e  ative string, in
1cf20 20 62 79 74 65 73 20 2d 4f 52 2d 20 7a 65 72 6f   bytes -OR- zero
1cf30 20 69 66 20 74 68 65 20 6c 65 6e 67 74 68 0d 0a   if the length..
1cf40 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 75 6c          /// coul
1cf50 64 20 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  d not be determi
1cf60 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ned...        //
1cf70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1cf80 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1cf90 74 69 63 20 69 6e 74 20 50 72 6f 62 65 46 6f 72  tic int ProbeFor
1cfa0 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68 28 0d  Utf8ByteLength(.
1cfb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1cfc0 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20  Ptr pValue,..   
1cfd0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 69 6d           int lim
1cfe0 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  it..            
1cff0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1d000 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
1d010 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ngth = 0;....   
1d020 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70 56           if ((pV
1d030 61 6c 75 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  alue != IntPtr.Z
1d040 65 72 6f 29 20 26 26 20 28 6c 69 6d 69 74 20 3e  ero) && (limit >
1d050 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20   0))..          
1d060 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d070 20 20 20 20 20 64 6f 0d 0a 20 20 20 20 20 20 20       do..       
1d080 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0a0 69 66 20 28 4d 61 72 73 68 61 6c 2e 52 65 61 64  if (Marshal.Read
1d0b0 42 79 74 65 28 70 56 61 6c 75 65 2c 20 6c 65 6e  Byte(pValue, len
1d0c0 67 74 68 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20  gth) == 0)..    
1d0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0e0 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20      break;....  
1d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d100 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e 3d 20    if (length >= 
1d110 6c 69 6d 69 74 29 0d 0a 20 20 20 20 20 20 20 20  limit)..        
1d120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d130 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20  break;....      
1d140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
1d150 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  ngth++;..       
1d160 20 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65           } while
1d170 20 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20   (true);..      
1d180 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1d190 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 65         return le
1d1a0 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ngth;..        }
1d1b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d200 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1d210 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1d220 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
1d230 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
1d240 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
1d250 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
1d260 69 6e 67 20 70 6f 69 6e 74 65 72 0d 0a 20 20 20  ing pointer..   
1d270 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20       /// into a 
1d280 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d  managed string..
1d290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1d2a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d2b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1d2c0 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20  ="pValue">..    
1d2d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1d2e0 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  ve NUL-terminate
1d2f0 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  d UTF-8 string p
1d300 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
1d310 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1d320 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1d330 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1d340 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
1d350 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f  ring or null upo
1d360 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
1d370 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1d380 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
1d390 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
1d3a0 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49   StringFromUtf8I
1d3b0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
1d3c0 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75      IntPtr pValu
1d3d0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
1d3e0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1d3f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1d400 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e  StringFromUtf8In
1d410 74 50 74 72 28 70 56 61 6c 75 65 2c 0d 0a 20 20  tPtr(pValue,..  
1d420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72                Pr
1d430 6f 62 65 46 6f 72 55 74 66 38 42 79 74 65 4c 65  obeForUtf8ByteLe
1d440 6e 67 74 68 28 70 56 61 6c 75 65 2c 20 54 68 69  ngth(pValue, Thi
1d450 72 74 79 42 69 74 73 29 29 3b 0d 0a 20 20 20 20  rtyBits));..    
1d460 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1d470 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1d480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d4b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1d4c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1d4d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
1d4e0 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63  onverts the spec
1d4f0 69 66 69 65 64 20 6e 61 74 69 76 65 20 55 54 46  ified native UTF
1d500 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
1d510 72 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  r of the specifi
1d520 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1d530 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d 61  length into a ma
1d540 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20  naged string... 
1d550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1d560 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d570 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1d580 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  pValue">..      
1d590 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1d5a0 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1d5b0 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  inter...        
1d5c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1d5d0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1d5e0 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d   name="length">.
1d5f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1d600 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e   length of the n
1d610 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e  ative string, in
1d620 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20   bytes...       
1d630 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1d640 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1d650 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1d660 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
1d670 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f  ring or null upo
1d680 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
1d690 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1d6a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
1d6b0 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
1d6c0 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49   StringFromUtf8I
1d6d0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
1d6e0 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75      IntPtr pValu
1d6f0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1d700 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20  int length..    
1d710 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1d720 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d730 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
1d740 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1d750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1d760 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
1d770 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65            if (le
1d780 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20  ngth > 0)..     
1d790 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d7a0 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
1d7b0 20 62 79 74 65 73 20 3d 20 6e 65 77 20 62 79 74   bytes = new byt
1d7c0 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20  e[length];....  
1d7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
1d7e0 72 73 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75  rshal.Copy(pValu
1d7f0 65 2c 20 62 79 74 65 73 2c 20 30 2c 20 6c 65 6e  e, bytes, 0, len
1d800 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
1d810 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1d820 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  GetStringFromUtf
1d830 38 42 79 74 65 73 28 62 79 74 65 73 29 3b 0d 0a  8Bytes(bytes);..
1d840 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1d850 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1d860 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  urn String.Empty
1d870 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1d880 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1d890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d8d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d8e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d8f0 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
1d900 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
1d910 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f  aged string into
1d920 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65   a native NUL-te
1d930 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20 20  rminated..      
1d940 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69    /// UTF-8 stri
1d950 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69 6e 67  ng pointer using
1d960 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64   memory obtained
1d970 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
1d980 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   core..        /
1d990 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
1d9a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1d9b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d9c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1d9d0 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1d9e0 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
1d9f0 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74  tring to convert
1da00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1da10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1da20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1da30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1da40 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1da50 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
1da60 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a 20  ng pointer or.. 
1da70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1da80 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
1da90 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c 75  o" /> upon failu
1daa0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1dab0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1dac0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1dad0 69 63 20 49 6e 74 50 74 72 20 55 74 66 38 49 6e  ic IntPtr Utf8In
1dae0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
1daf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1db00 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
1db10 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1db20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1db30 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
1db40 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1db50 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
1db60 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
1db70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72          IntPtr r
1db80 65 73 75 6c 74 20 3d 20 49 6e 74 50 74 72 2e 5a  esult = IntPtr.Z
1db90 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
1dba0 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d    byte[] bytes =
1dbb0 20 47 65 74 55 74 66 38 42 79 74 65 73 46 72 6f   GetUtf8BytesFro
1dbc0 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d  mString(value);.
1dbd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
1dbe0 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c  f (bytes == null
1dbf0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1dc00 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
1dc10 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
1dc20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
1dc30 20 3d 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 3b   = bytes.Length;
1dc40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1dc50 72 65 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d  result = SQLiteM
1dc60 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c  emory.Allocate(l
1dc70 65 6e 67 74 68 20 2b 20 31 29 3b 0d 0a 0d 0a 20  ength + 1);.... 
1dc80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
1dc90 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74 72 2e  esult == IntPtr.
1dca0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1dcb0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1dcc0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
1dcd0 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
1dce0 6c 2e 43 6f 70 79 28 62 79 74 65 73 2c 20 30 2c  l.Copy(bytes, 0,
1dcf0 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68 29   result, length)
1dd00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  ;..            M
1dd10 61 72 73 68 61 6c 2e 57 72 69 74 65 42 79 74 65  arshal.WriteByte
1dd20 28 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68 2c  (result, length,
1dd30 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   0);....        
1dd40 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
1dd50 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  t;..        }.. 
1dd60 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
1dd70 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
1dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddc0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1ddd0 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74  #region UTF-8 St
1dde0 72 69 6e 67 20 41 72 72 61 79 20 48 65 6c 70 65  ring Array Helpe
1ddf0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
1de00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1de10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1de20 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63 61 6c  nverts a logical
1de30 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65   array of native
1de40 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
1de50 55 54 46 2d 38 20 73 74 72 69 6e 67 0d 0a 20 20  UTF-8 string..  
1de60 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65        /// pointe
1de70 72 73 20 69 6e 74 6f 20 61 6e 20 61 72 72 61 79  rs into an array
1de80 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69   of managed stri
1de90 6e 67 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ngs...        //
1dea0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1deb0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1dec0 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
1ded0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1dee0 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74  umber of element
1def0 73 20 69 6e 20 74 68 65 20 6c 6f 67 69 63 61 6c  s in the logical
1df00 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65   array of native
1df10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55  ..        /// NU
1df20 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46  L-terminated UTF
1df30 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
1df40 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rs...        ///
1df50 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1df60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1df70 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
1df80 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1df90 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1dfa0 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
1dfb0 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  of native NUL-te
1dfc0 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20 20  rminated..      
1dfd0 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69    /// UTF-8 stri
1dfe0 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63  ng pointers to c
1dff0 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1e000 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1e010 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1e020 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1e030 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 6d  / The array of m
1e040 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73 20 6f  anaged strings o
1e050 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
1e060 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1e070 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1e080 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1e090 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53 74 72  tic string[] Str
1e0a0 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38  ingArrayFromUtf8
1e0b0 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a  SizeAndIntPtr(..
1e0c0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1e0d0 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  argc,..         
1e0e0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a     IntPtr argv..
1e0f0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1e100 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e110 20 20 20 20 20 20 69 66 20 28 61 72 67 63 20 3c        if (argc <
1e120 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
1e130 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1e140 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e150 20 69 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74   if (argv == Int
1e160 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1e170 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e180 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
1e190 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
1e1a0 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 73 74 72  result = new str
1e1b0 69 6e 67 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20  ing[argc];....  
1e1c0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
1e1d0 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c 20 6f 66  nt index = 0, of
1e1e0 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20  fset = 0;..     
1e1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1e200 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65  ndex < result.Le
1e210 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20  ngth;..         
1e220 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
1e230 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e  ++, offset += In
1e240 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20 20 20 20  tPtr.Size)..    
1e250 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e260 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1e270 72 20 70 41 72 67 20 3d 20 53 51 4c 69 74 65 4d  r pArg = SQLiteM
1e280 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
1e290 72 28 61 72 67 76 2c 20 6f 66 66 73 65 74 29 3b  r(argv, offset);
1e2a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e2b0 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78      result[index
1e2c0 5d 20 3d 20 28 70 41 72 67 20 21 3d 20 49 6e 74  ] = (pArg != Int
1e2d0 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20  Ptr.Zero) ?..   
1e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2f0 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49   StringFromUtf8I
1e300 6e 74 50 74 72 28 70 41 72 67 29 20 3a 20 6e 75  ntPtr(pArg) : nu
1e310 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
1e320 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1e330 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
1e340 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e350 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e3a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1e3b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1e3c0 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e   /// Converts an
1e3d0 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65   array of manage
1e3e0 64 20 73 74 72 69 6e 67 73 20 69 6e 74 6f 20 61  d strings into a
1e3f0 6e 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  n array of nativ
1e400 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  e..        /// N
1e410 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
1e420 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1e430 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ers...        //
1e440 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1e450 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1e460 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d   name="values">.
1e470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1e480 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65   array of manage
1e490 64 20 73 74 72 69 6e 67 73 20 74 6f 20 63 6f 6e  d strings to con
1e4a0 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
1e4b0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1e4c0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1e4d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1e4e0 54 68 65 20 61 72 72 61 79 20 6f 66 20 6e 61 74  The array of nat
1e4f0 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1e500 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
1e510 70 6f 69 6e 74 65 72 73 20 6f 72 20 6e 75 6c 6c  pointers or null
1e520 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 70  ..        /// up
1e530 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
1e540 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1e550 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1e560 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
1e570 72 5b 5d 20 55 74 66 38 49 6e 74 50 74 72 41 72  r[] Utf8IntPtrAr
1e580 72 61 79 46 72 6f 6d 53 74 72 69 6e 67 41 72 72  rayFromStringArr
1e590 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
1e5a0 20 73 74 72 69 6e 67 5b 5d 20 76 61 6c 75 65 73   string[] values
1e5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
1e5c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1e5d0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
1e5e0 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
1e5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1e600 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
1e610 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 5b           IntPtr[
1e620 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 49  ] result = new I
1e630 6e 74 50 74 72 5b 76 61 6c 75 65 73 2e 4c 65 6e  ntPtr[values.Len
1e640 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth];....       
1e650 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e       for (int in
1e660 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c  dex = 0; index <
1e670 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 20   result.Length; 
1e680 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20  index++)..      
1e690 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
1e6a0 5b 69 6e 64 65 78 5d 20 3d 20 55 74 66 38 49 6e  [index] = Utf8In
1e6b0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76  tPtrFromString(v
1e6c0 61 6c 75 65 73 5b 69 6e 64 65 78 5d 29 3b 0d 0a  alues[index]);..
1e6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1e6e0 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
1e6f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e700 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
1e710 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
1e720 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
1e730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e770 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
1e780 67 69 6f 6e 20 53 51 4c 69 74 65 42 79 74 65 73  gion SQLiteBytes
1e790 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
1e7a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1e7b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
1e7c0 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74  lass contains st
1e7d0 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61  atic methods tha
1e7e0 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65  t are used to de
1e7f0 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65 0d 0a  al with native..
1e800 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73      /// pointers
1e810 20 74 6f 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b   to memory block
1e820 73 20 74 68 61 74 20 6c 6f 67 69 63 61 6c 6c 79  s that logically
1e830 20 63 6f 6e 74 61 69 6e 20 61 72 72 61 79 73 20   contain arrays 
1e840 6f 66 20 62 79 74 65 73 20 74 6f 20 62 65 0d 0a  of bytes to be..
1e850 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 77 69 74      /// used wit
1e860 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
1e870 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1e880 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1e890 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e8a0 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65  tic class SQLite
1e8b0 42 79 74 65 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  Bytes..    {..  
1e8c0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 42 79        #region By
1e8d0 74 65 20 41 72 72 61 79 20 48 65 6c 70 65 72 20  te Array Helper 
1e8e0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
1e8f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1e900 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1e910 65 72 74 73 20 61 20 6e 61 74 69 76 65 20 70 6f  erts a native po
1e920 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69 63  inter to a logic
1e930 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  al array of byte
1e940 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  s of the..      
1e950 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
1e960 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d 61  length into a ma
1e970 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79  naged byte array
1e980 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e990 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1e9a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1e9b0 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20  me="pValue">..  
1e9c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1e9d0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1e9e0 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
1e9f0 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f  y of bytes to co
1ea00 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1ea10 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ea20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ea30 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d   name="length">.
1ea40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ea50 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79 74 65   length, in byte
1ea60 73 2c 20 6f 66 20 74 68 65 20 6c 6f 67 69 63 61  s, of the logica
1ea70 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  l array of bytes
1ea80 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
1ea90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1eaa0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1eab0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1eac0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
1ead0 65 64 20 62 79 74 65 20 61 72 72 61 79 20 6f 72  ed byte array or
1eae0 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75   null upon failu
1eaf0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1eb00 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1eb10 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1eb20 69 63 20 62 79 74 65 5b 5d 20 46 72 6f 6d 49 6e  ic byte[] FromIn
1eb30 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
1eb40 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65     IntPtr pValue
1eb50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
1eb60 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20  nt length..     
1eb70 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1eb80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1eb90 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49   if (pValue == I
1eba0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1ebb0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1ebc0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
1ebd0 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e           if (len
1ebe0 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20  gth == 0)..     
1ebf0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1ec00 6e 20 6e 65 77 20 62 79 74 65 5b 30 5d 3b 0d 0a  n new byte[0];..
1ec10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
1ec20 74 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65  te[] result = ne
1ec30 77 20 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d  w byte[length];.
1ec40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  ...            M
1ec50 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c  arshal.Copy(pVal
1ec60 75 65 2c 20 72 65 73 75 6c 74 2c 20 30 2c 20 6c  ue, result, 0, l
1ec70 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20  ength);....     
1ec80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
1ec90 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d  sult;..        }
1eca0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1ecb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecf0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1ed00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1ed10 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
1ed20 74 73 20 61 20 6d 61 6e 61 67 65 64 20 62 79 74  ts a managed byt
1ed30 65 20 61 72 72 61 79 20 69 6e 74 6f 20 61 20 6e  e array into a n
1ed40 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1ed50 20 61 20 6c 6f 67 69 63 61 6c 0d 0a 20 20 20 20   a logical..    
1ed60 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 20 6f 66      /// array of
1ed70 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20   bytes...       
1ed80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1ed90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1eda0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1edb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1edc0 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20  he managed byte 
1edd0 61 72 72 61 79 20 74 6f 20 63 6f 6e 76 65 72 74  array to convert
1ede0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1edf0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1ee00 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1ee10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ee20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1ee30 6f 20 61 20 6c 6f 67 69 63 61 6c 20 62 79 74 65  o a logical byte
1ee40 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20 75   array or null u
1ee50 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
1ee60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1ee70 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1ee80 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
1ee90 74 72 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20  tr ToIntPtr(..  
1eea0 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
1eeb0 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
1eec0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
1eed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1eee0 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
1eef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ef00 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1ef10 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
1ef20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20       int length 
1ef30 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d  = value.Length;.
1ef40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
1ef50 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d  f (length == 0).
1ef60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ef70 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1ef80 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
1ef90 20 20 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c      IntPtr resul
1efa0 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  t = SQLiteMemory
1efb0 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68  .Allocate(length
1efc0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1efd0 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20    if (result == 
1efe0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1eff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1f000 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
1f010 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f020 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 76 61   Marshal.Copy(va
1f030 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c 74 2c 20  lue, 0, result, 
1f040 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20  length);....    
1f050 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
1f060 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
1f070 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1f080 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
1f090 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1f0a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1f0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1f0f0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
1f100 51 4c 69 74 65 4d 61 72 73 68 61 6c 20 53 74 61  QLiteMarshal Sta
1f110 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  tic Class..    /
1f120 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1f130 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
1f140 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63   contains static
1f150 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72   methods that ar
1f160 65 20 75 73 65 64 20 74 6f 20 70 65 72 66 6f 72  e used to perfor
1f170 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20 20 20 2f  m several..    /
1f180 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20 64 61 74  // low-level dat
1f190 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67 20 74 61  a marshalling ta
1f1a0 73 6b 73 20 62 65 74 77 65 65 6e 20 6e 61 74 69  sks between nati
1f1b0 76 65 20 61 6e 64 20 6d 61 6e 61 67 65 64 20 63  ve and managed c
1f1c0 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
1f1d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
1f1e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
1f1f0 61 73 73 20 53 51 4c 69 74 65 4d 61 72 73 68 61  ass SQLiteMarsha
1f200 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  l..    {..      
1f210 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 50 74 72    #region IntPtr
1f220 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
1f230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1f240 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1f250 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61 20 6e 65  /// Returns a ne
1f260 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  w <see cref="Int
1f270 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
1f280 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20 6f 6e  nstance based on
1f290 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1f2a0 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  / specified <see
1f2b0 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
1f2c0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1f2d0 65 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65 72  e and an integer
1f2e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66  ..        /// of
1f2f0 66 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  fset...        /
1f300 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1f310 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f320 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
1f330 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f340 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
1f350 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
1f360 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
1f370 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
1f380 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
1f390 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
1f3a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1f3b0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1f3c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
1f3d0 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
1f3e0 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
1f3f0 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
1f400 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
1f410 69 6f 6e 20 74 68 61 74 20 74 68 65 20 6e 65 77  ion that the new
1f420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1f430 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
1f440 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1f450 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f 69 6e 74  nce should point
1f460 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   to...        //
1f470 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f480 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1f490 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f4a0 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66  he new <see cref
1f4b0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
1f4c0 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
1f4d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1f4e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1f4f0 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
1f500 50 74 72 20 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr IntPtrForOff
1f510 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  set(..          
1f520 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
1f530 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
1f540 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20  nt offset..     
1f550 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1f560 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1f570 20 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 50   return new IntP
1f580 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f 49 6e 74  tr(pointer.ToInt
1f590 36 34 28 29 20 2b 20 6f 66 66 73 65 74 29 3b 0d  64() + offset);.
1f5a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1f5b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f600 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1f610 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1f620 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70 20 61 6e  /// Rounds up an
1f630 20 69 6e 74 65 67 65 72 20 73 69 7a 65 20 74 6f   integer size to
1f640 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74 69 70   the next multip
1f650 6c 65 20 6f 66 20 74 68 65 20 61 6c 69 67 6e 6d  le of the alignm
1f660 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
1f670 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1f680 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1f690 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20   name="size">.. 
1f6a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73         /// The s
1f6b0 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 74  ize, in bytes, t
1f6c0 6f 20 62 65 20 72 6f 75 6e 64 65 64 20 75 70 2e  o be rounded up.
1f6d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f6e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f6f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1f700 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20  "alignment">..  
1f710 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65        /// The re
1f720 71 75 69 72 65 64 20 61 6c 69 67 6e 6d 65 6e 74  quired alignment
1f730 20 66 6f 72 20 74 68 65 20 72 65 74 75 72 6e 20   for the return 
1f740 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
1f750 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f760 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1f770 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1f780 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79   The size, in by
1f790 74 65 73 2c 20 72 6f 75 6e 64 65 64 20 75 70 20  tes, rounded up 
1f7a0 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74  to the next mult
1f7b0 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a 20 20 20  iple of the..   
1f7c0 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67 6e 6d 65       /// alignme
1f7d0 6e 74 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  nt.  This value 
1f7e0 6d 61 79 20 65 6e 64 20 75 70 20 62 65 69 6e 67  may end up being
1f7f0 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65   the same as the
1f800 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20 20 20   original..     
1f810 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d 0a 20 20     /// size...  
1f820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1f830 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1f840 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20  blic static int 
1f850 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20 20 20 20  RoundUp(..      
1f860 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d        int size,.
1f870 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1f880 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20   alignment..    
1f890 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1f8a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f8b0 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 4d    int alignmentM
1f8c0 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69 67 6e 6d  inusOne = alignm
1f8d0 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20 20 20 20  ent - 1;..      
1f8e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 73        return ((s
1f8f0 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65 6e 74 4d  ize + alignmentM
1f900 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61 6c 69 67  inusOne) & ~alig
1f910 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 29 3b 0d  nmentMinusOne);.
1f920 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1f930 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f980 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1f990 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1f9a0 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
1f9b0 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79  he offset, in by
1f9c0 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65 78 74  tes, of the next
1f9d0 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65   structure membe
1f9e0 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1f9f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1fa00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1fa10 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
1fa20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f         /// The o
1fa30 66 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c  ffset, in bytes,
1fa40 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
1fa50 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65 72  structure member
1fa60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1fa70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1fa80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1fa90 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20  ="size">..      
1faa0 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20    /// The size, 
1fab0 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65  in bytes, of the
1fac0 20 63 75 72 72 65 6e 74 20 73 74 72 75 63 74 75   current structu
1fad0 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20  re member...    
1fae0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1faf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fb00 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69 67 6e  aram name="align
1fb10 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  ment">..        
1fb20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e 6d 65 6e  /// The alignmen
1fb30 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  t, in bytes, of 
1fb40 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74 75  the next structu
1fb50 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20  re member...    
1fb60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1fb70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1fb80 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1fb90 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65 74 2c   /// The offset,
1fba0 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
1fbb0 65 20 6e 65 78 74 20 73 74 72 75 63 74 75 72 65  e next structure
1fbc0 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   member...      
1fbd0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1fbe0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1fbf0 20 73 74 61 74 69 63 20 69 6e 74 20 4e 65 78 74   static int Next
1fc00 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
1fc10 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
1fc20 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
1fc30 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20 20 20  int size,..     
1fc40 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e         int align
1fc50 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
1fc60 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1fc70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1fc80 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66 66 73 65  rn RoundUp(offse
1fc90 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69 67 6e 6d  t + size, alignm
1fca0 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ent);..        }
1fcb0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1fcc0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1fcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1fd20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73 68     #region Marsh
1fd30 61 6c 20 52 65 61 64 20 48 65 6c 70 65 72 20 4d  al Read Helper M
1fd40 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
1fd50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1fd60 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73         /// Reads
1fd70 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e   a <see cref="In
1fd80 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 66 72  t32" /> value fr
1fd90 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64  om the specified
1fda0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
1fdb0 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
1fdc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1fdd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1fde0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1fdf0 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
1fe00 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1fe10 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
1fe20 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1fe30 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
1fe40 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
1fe50 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
1fe60 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
1fe70 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1fe80 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1fe90 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
1fea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1feb0 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
1fec0 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
1fed0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
1fee0 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
1fef0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1ff00 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
1ff10 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63  o be read is loc
1ff20 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
1ff30 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ff40 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1ff50 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1ff60 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
1ff70 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 61  nt32" /> value a
1ff80 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
1ff90 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
1ffa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ffb0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1ffc0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1ffd0 69 6e 74 20 52 65 61 64 49 6e 74 33 32 28 0d 0a  int ReadInt32(..
1ffe0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1fff0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
20000 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
20010 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
20020 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
20030 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20040 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20050 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20060 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  n Marshal.ReadIn
20070 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  t32(pointer, off
20080 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  set);..#else..  
20090 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
200a0 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
200b0 33 32 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  32(IntPtrForOffs
200c0 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
200d0 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  et));..#endif.. 
200e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
200f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20140 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
20150 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
20160 2f 20 52 65 61 64 73 20 61 20 3c 73 65 65 20 63  / Reads a <see c
20170 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
20180 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 73 70  alue from the sp
20190 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a  ecified memory..
201a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61          /// loca
201b0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
201c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
201d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
201e0 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
201f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20200 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
20210 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
20220 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
20230 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
20240 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
20250 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
20260 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
20270 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
20280 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
20290 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
202a0 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
202b0 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
202c0 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
202d0 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20  ion where the.. 
202e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
202f0 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
20300 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 61 64  value to be read
20310 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20   is located...  
20320 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
20330 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
20340 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
20350 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20360 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
20370 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70 65  value at the spe
20380 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f  cified memory lo
20390 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
203a0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
203b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
203c0 73 74 61 74 69 63 20 6c 6f 6e 67 20 52 65 61 64  static long Read
203d0 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
203e0 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
203f0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
20400 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20   int offset..   
20410 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
20420 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
20430 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20440 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
20450 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
20460 6c 2e 52 65 61 64 49 6e 74 36 34 28 70 6f 69 6e  l.ReadInt64(poin
20470 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23  ter, offset);..#
20480 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
20490 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
204a0 2e 52 65 61 64 49 6e 74 36 34 28 49 6e 74 50 74  .ReadInt64(IntPt
204b0 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
204c0 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23  er, offset));..#
204d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
204e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
204f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20530 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
20540 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
20550 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
20560 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  a <see cref="Dou
20570 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 66 72  ble" /> value fr
20580 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64  om the specified
20590 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
205a0 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
205b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
205c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
205d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
205e0 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
205f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
20600 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
20610 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
20620 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
20630 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
20640 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
20650 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
20660 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
20670 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
20680 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
20690 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
206a0 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
206b0 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
206c0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
206d0 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
206e0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
206f0 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 62 65 20  ouble" /> to be 
20700 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
20710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20720 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20730 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
20740 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20750 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
20760 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68  " /> value at th
20770 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
20780 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
20790 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
207a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
207b0 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75 62  blic static doub
207c0 6c 65 20 52 65 61 64 44 6f 75 62 6c 65 28 0d 0a  le ReadDouble(..
207d0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
207e0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
207f0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
20800 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
20810 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
20820 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20830 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20840 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20850 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 49  n BitConverter.I
20860 6e 74 36 34 42 69 74 73 54 6f 44 6f 75 62 6c 65  nt64BitsToDouble
20870 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  (Marshal.ReadInt
20880 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64(..           
20890 20 20 20 20 20 70 6f 69 6e 74 65 72 2c 20 6f 66       pointer, of
208a0 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a  fset));..#else..
208b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
208c0 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  rn BitConverter.
208d0 54 6f 44 6f 75 62 6c 65 28 42 69 74 43 6f 6e 76  ToDouble(BitConv
208e0 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28 0d  erter.GetBytes(.
208f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20900 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
20910 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  64(IntPtrForOffs
20920 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
20930 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23 65 6e 64  et))), 0);..#end
20940 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
20950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
209b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
209c0 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e 20     /// Reads an 
209d0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
209e0 72 22 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d  r" /> value from
209f0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
20a00 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
20a10 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  // location...  
20a20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
20a30 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
20a40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
20a50 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20  ointer">..      
20a60 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
20a70 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
20a80 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
20a90 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65  representing the
20aa0 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f   base..        /
20ab0 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  // memory locati
20ac0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
20ad0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20ae0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20af0 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20  me="offset">..  
20b00 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
20b10 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f  teger offset fro
20b20 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72  m the base memor
20b30 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65  y location where
20b40 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
20b50 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
20b60 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  Ptr" /> value to
20b70 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61   be read is loca
20b80 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
20b90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20ba0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
20bb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20bc0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
20bd0 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 61  tPtr" /> value a
20be0 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
20bf0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
20c00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20c10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20c20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
20c30 49 6e 74 50 74 72 20 52 65 61 64 49 6e 74 50 74  IntPtr ReadIntPt
20c40 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
20c50 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
20c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
20c70 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
20c80 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
20c90 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
20ca0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20cb0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
20cc0 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
20cd0 61 64 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72  adIntPtr(pointer
20ce0 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73  , offset);..#els
20cf0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
20d00 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
20d10 61 64 49 6e 74 50 74 72 28 49 6e 74 50 74 72 46  adIntPtr(IntPtrF
20d20 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72  orOffset(pointer
20d30 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e  , offset));..#en
20d40 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
20d50 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
20d60 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
20d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20db0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
20dc0 20 23 72 65 67 69 6f 6e 20 4d 61 72 73 68 61 6c   #region Marshal
20dd0 20 57 72 69 74 65 20 48 65 6c 70 65 72 20 4d 65   Write Helper Me
20de0 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
20df0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
20e00 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73        /// Writes
20e10 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49   an <see cref="I
20e20 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
20e30 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
20e40 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
20e50 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
20e60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
20e70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
20e80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20e90 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
20ea0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20eb0 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
20ec0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
20ed0 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
20ee0 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
20ef0 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
20f00 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
20f10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20f20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20f30 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
20f40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
20f50 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
20f60 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
20f70 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
20f80 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
20f90 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
20fa0 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  t32" /> value to
20fb0 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c   be written is l
20fc0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
20fd0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20fe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20ff0 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
21000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21010 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33   <see cref="Int3
21020 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77  2" /> value to w
21030 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rite...        /
21040 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21050 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
21060 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74  ic void WriteInt
21070 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
21080 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
21090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
210a0 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  t offset,..     
210b0 20 20 20 20 20 20 20 69 6e 74 20 76 61 6c 75 65         int value
210c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
210d0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
210e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
210f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21100 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
21110 57 72 69 74 65 49 6e 74 33 32 28 70 6f 69 6e 74  WriteInt32(point
21120 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75  er, offset, valu
21130 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
21140 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
21150 57 72 69 74 65 49 6e 74 33 32 28 49 6e 74 50 74  WriteInt32(IntPt
21160 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
21170 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61 6c  er, offset), val
21180 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue);..#endif..  
21190 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
211a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
211b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
211f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
21200 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
21210 20 57 72 69 74 65 73 20 61 6e 20 3c 73 65 65 20   Writes an <see 
21220 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
21230 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70 65  value to the spe
21240 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20  cified memory.. 
21250 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74         /// locat
21260 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
21270 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
21280 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21290 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e   name="pointer">
212a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
212b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
212c0 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
212d0 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e  nstance represen
212e0 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20  ting the base.. 
212f0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72         /// memor
21300 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
21310 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
21320 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
21330 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73  param name="offs
21340 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  et">..        //
21350 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66  / The integer of
21360 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61  fset from the ba
21370 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  se memory locati
21380 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20  on where the..  
21390 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
213a0 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
213b0 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69 74 74  alue to be writt
213c0 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a  en is located...
213d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
213e0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
213f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
21400 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
21410 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
21420 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c  f="Int64" /> val
21430 75 65 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20  ue to write...  
21440 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21450 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
21460 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 57  ic static void W
21470 72 69 74 65 49 6e 74 36 34 28 0d 0a 20 20 20 20  riteInt64(..    
21480 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
21490 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
214a0 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c       int offset,
214b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
214c0 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
214d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
214e0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
214f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21500 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
21510 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
21520 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  64(pointer, offs
21530 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  et, value);..#el
21540 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
21550 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
21560 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  64(IntPtrForOffs
21570 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
21580 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  et), value);..#e
21590 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
215a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
215b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
21600 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
21610 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20       /// Writes 
21620 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  a <see cref="Dou
21630 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ble" /> value to
21640 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
21650 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
21660 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  // location...  
21670 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
21680 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21690 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
216a0 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20  ointer">..      
216b0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
216c0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
216d0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
216e0 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65  representing the
216f0 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f   base..        /
21700 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  // memory locati
21710 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
21720 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
21730 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21740 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20  me="offset">..  
21750 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
21760 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f  teger offset fro
21770 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72  m the base memor
21780 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65  y location where
21790 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
217a0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  / <see cref="Dou
217b0 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ble" /> value to
217c0 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c   be written is l
217d0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
217e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
217f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21800 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
21810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21820 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
21830 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  le" /> value to 
21840 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  write...        
21850 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21860 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21870 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 44 6f  tic void WriteDo
21880 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  uble(..         
21890 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
218a0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
218b0 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  int offset,..   
218c0 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
218d0 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
218e0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
218f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21900 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21910 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
21920 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28  shal.WriteInt64(
21930 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c  pointer, offset,
21940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21950 20 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 44    BitConverter.D
21960 6f 75 62 6c 65 54 6f 49 6e 74 36 34 42 69 74 73  oubleToInt64Bits
21970 28 76 61 6c 75 65 29 29 3b 0d 0a 23 65 6c 73 65  (value));..#else
21980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
21990 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34  rshal.WriteInt64
219a0 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  (IntPtrForOffset
219b0 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
219c0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
219d0 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65 72      BitConverter
219e0 2e 54 6f 49 6e 74 36 34 28 42 69 74 43 6f 6e 76  .ToInt64(BitConv
219f0 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28 76  erter.GetBytes(v
21a00 61 6c 75 65 29 2c 20 30 29 29 3b 0d 0a 23 65 6e  alue), 0));..#en
21a10 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
21a20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
21a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
21a80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
21a90 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20 61      /// Writes a
21aa0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
21ab0 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  tr" /> value to 
21ac0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65  the specified me
21ad0 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
21ae0 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  / location...   
21af0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
21b00 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
21b10 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f   <param name="po
21b20 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  inter">..       
21b30 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
21b40 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
21b50 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72  bject instance r
21b60 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20  epresenting the 
21b70 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  base..        //
21b80 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  / memory locatio
21b90 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
21ba0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
21bb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21bc0 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20  e="offset">..   
21bd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74       /// The int
21be0 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d  eger offset from
21bf0 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79   the base memory
21c00 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20   location where 
21c10 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
21c20 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
21c30 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  tr" /> value to 
21c40 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c 6f  be written is lo
21c50 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
21c60 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21c70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21c80 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
21c90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21ca0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
21cb0 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77  r" /> value to w
21cc0 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rite...        /
21cd0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21ce0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
21cf0 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74  ic void WriteInt
21d00 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
21d10 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
21d20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
21d30 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
21d40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 76          IntPtr v
21d50 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
21d60 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
21d70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21d80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21d90 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
21da0 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
21db0 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c  pointer, offset,
21dc0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d   value);..#else.
21dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
21de0 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
21df0 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  (IntPtrForOffset
21e00 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
21e10 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ), value);..#end
21e20 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  if..        }.. 
21e30 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
21e40 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
21e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
21ea0 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63 74 20 48  #region Object H
21eb0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
21ec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
21ed0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21ee0 2f 20 47 65 6e 65 72 61 74 65 73 20 61 20 68 61  / Generates a ha
21ef0 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 66 6f  sh code value fo
21f00 72 20 74 68 65 20 6f 62 6a 65 63 74 2e 0d 0a 20  r the object... 
21f10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
21f20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21f30 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21f40 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
21f50 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20   /// The object 
21f60 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
21f70 20 63 61 6c 63 75 6c 61 74 65 20 74 68 65 20 68   calculate the h
21f80 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ash code...     
21f90 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21fb0 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65 6e 74 69  ram name="identi
21fc0 74 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ty">..        //
21fd0 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 64 69  / Non-zero if di
21fe0 66 66 65 72 65 6e 74 20 6f 62 6a 65 63 74 20 69  fferent object i
21ff0 6e 73 74 61 6e 63 65 73 20 77 69 74 68 20 74 68  nstances with th
22000 65 20 73 61 6d 65 20 76 61 6c 75 65 20 73 68 6f  e same value sho
22010 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  uld..        ///
22020 20 67 65 6e 65 72 61 74 65 20 64 69 66 66 65 72   generate differ
22030 65 6e 74 20 68 61 73 68 20 63 6f 64 65 73 2c 20  ent hash codes, 
22040 77 68 65 72 65 20 61 70 70 6c 69 63 61 62 6c 65  where applicable
22050 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  .  This paramete
22060 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68  r..        /// h
22070 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20  as no effect on 
22080 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
22090 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20   Framework...   
220a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
220b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
220c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
220d0 20 20 2f 2f 2f 20 54 68 65 20 68 61 73 68 20 63    /// The hash c
220e0 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52 2d 20 7a  ode value -OR- z
220f0 65 72 6f 20 69 66 20 74 68 65 20 6f 62 6a 65 63  ero if the objec
22100 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t is null...    
22110 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
22120 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
22130 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 47 65  ic static int Ge
22140 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20  tHashCode(..    
22150 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
22160 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
22170 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74 69 74 79     bool identity
22180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
22190 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
221a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
221b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
221c0 20 20 20 20 20 20 20 20 69 66 20 28 69 64 65 6e          if (iden
221d0 74 69 74 79 29 0d 0a 20 20 20 20 20 20 20 20 20  tity)..         
221e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 75         return Ru
221f0 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e 47 65 74  ntimeHelpers.Get
22200 48 61 73 68 43 6f 64 65 28 76 61 6c 75 65 29 3b  HashCode(value);
22210 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
22220 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
22230 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72  e == null) retur
22240 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  n 0;..          
22250 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 47    return value.G
22260 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 20  etHashCode();.. 
22270 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
22280 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
22290 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
222a0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
222b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
22300 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 6f 64 75  egion SQLiteModu
22310 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20  le Base Class.. 
22320 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
22330 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
22340 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
22350 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61  a managed virtua
22360 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 69  l table module i
22370 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
22380 20 20 20 20 2f 2f 2f 20 49 74 20 69 73 20 6e 6f      /// It is no
22390 74 20 73 65 61 6c 65 64 20 61 6e 64 20 6d 75 73  t sealed and mus
223a0 74 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65  t be used as the
223b0 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20   base class for 
223c0 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65  any..    /// use
223d0 72 2d 64 65 66 69 6e 65 64 20 76 69 72 74 75 61  r-defined virtua
223e0 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63  l table module c
223f0 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74  lasses implement
22400 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f  ed in managed co
22410 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  de...    /// </s
22420 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
22430 6c 69 63 20 61 62 73 74 72 61 63 74 20 63 6c 61  lic abstract cla
22440 73 73 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20  ss SQLiteModule 
22450 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  :..            I
22460 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
22470 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74 65 4e 61  ule, /*ISQLiteNa
22480 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f 0d 0a 20  tiveModule,*/.. 
22490 20 20 20 20 20 20 20 20 20 20 20 49 44 69 73 70             IDisp
224a0 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45  osable /* NOT SE
224b0 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a  ALED */..    {..
224c0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
224d0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
224e0 6c 65 20 50 72 69 76 61 74 65 20 43 6c 61 73 73  le Private Class
224f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22500 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22510 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
22520 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 3c  implements the <
22530 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
22540 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
22550 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  >..        /// i
22560 6e 74 65 72 66 61 63 65 20 62 79 20 66 6f 72 77  nterface by forw
22570 61 72 64 69 6e 67 20 74 68 6f 73 65 20 6d 65 74  arding those met
22580 68 6f 64 20 63 61 6c 6c 73 20 74 6f 20 74 68 65  hod calls to the
22590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
225a0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
225b0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
225c0 20 69 6e 73 74 61 6e 63 65 20 69 74 20 63 6f 6e   instance it con
225d0 74 61 69 6e 73 2e 20 20 49 66 20 74 68 65 0d 0a  tains.  If the..
225e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74          /// cont
225f0 61 69 6e 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ained <see cref=
22600 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
22610 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
22620 65 20 69 73 20 6e 75 6c 6c 2c 20 61 6c 6c 0d 0a  e is null, all..
22630 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
22640 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
22650 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
22660 2f 3e 20 6d 65 74 68 6f 64 73 20 73 69 6d 70 6c  /> methods simpl
22670 79 20 67 65 6e 65 72 61 74 65 20 61 6e 0d 0a 20  y generate an.. 
22680 20 20 20 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72         /// error
22690 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
226a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
226b0 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65     private seale
226c0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4e 61  d class SQLiteNa
226d0 74 69 76 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20  tiveModule :..  
226e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 53                IS
226f0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
22700 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a  e, IDisposable..
22710 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22720 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
22730 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
22740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22750 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22760 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69           /// Thi
22770 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74  s is the value t
22780 68 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73  hat is always us
22790 65 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45  ed for the "logE
227a0 72 72 6f 72 73 22 0d 0a 20 20 20 20 20 20 20 20  rrors"..        
227b0 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65      /// paramete
227c0 72 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75 73  r to the various
227d0 20 73 74 61 74 69 63 20 65 72 72 6f 72 20 68 61   static error ha
227e0 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20 70  ndling methods p
227f0 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20  rovided..       
22800 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20       /// by the 
22810 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
22820 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
22830 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
22840 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
22850 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
22860 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44  ate const bool D
22870 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 20  efaultLogErrors 
22880 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  = true;....     
22890 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
228a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
228e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
228f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22900 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
22910 20 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20   the value that 
22920 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66  is always used f
22930 6f 72 20 74 68 65 20 22 6c 6f 67 45 78 63 65 70  or the "logExcep
22940 74 69 6f 6e 73 22 0d 0a 20 20 20 20 20 20 20 20  tions"..        
22950 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65      /// paramete
22960 72 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75 73  r to the various
22970 20 73 74 61 74 69 63 20 65 72 72 6f 72 20 68 61   static error ha
22980 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20 70  ndling methods p
22990 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20  rovided..       
229a0 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20       /// by the 
229b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
229c0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
229d0 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
229e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
229f0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
22a00 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44  ate const bool D
22a10 65 66 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69  efaultLogExcepti
22a20 6f 6e 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  ons = true;.... 
22a30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
22a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
22a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22a90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22aa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69           /// Thi
22ab0 73 20 69 73 20 74 68 65 20 65 72 72 6f 72 20 6d  s is the error m
22ac0 65 73 73 61 67 65 20 74 65 78 74 20 75 73 65 64  essage text used
22ad0 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 74 61 69   when the contai
22ae0 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ned..           
22af0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
22b00 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
22b10 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
22b20 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
22b30 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
22b40 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f  // for any reaso
22b50 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
22b60 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
22b70 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
22b80 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
22b90 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
22ba0 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 20  bleErrorMessage 
22bb0 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
22bc0 20 20 20 22 6e 61 74 69 76 65 20 6d 6f 64 75 6c     "native modul
22bd0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
22be0 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 22 3b   not available";
22bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
22c00 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
22c10 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
22c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
22c60 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
22c70 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
22c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22c90 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22ca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
22cb0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
22cc0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
22cd0 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
22ce0 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20   to provide..   
22cf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20           /// an 
22d00 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
22d10 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
22d20 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
22d30 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
22d40 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
22d50 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ace...          
22d60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
22d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
22d80 69 76 61 74 65 20 53 51 4c 69 74 65 4d 6f 64 75  ivate SQLiteModu
22d90 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  le module;..    
22da0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
22db0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
22dc0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
22dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
22e10 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
22e20 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
22e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22e40 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22e50 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e           /// Con
22e60 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
22e70 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
22e80 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
22e90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
22ea0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22eb0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
22ec0 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ule">..         
22ed0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
22ee0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
22ef0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
22f00 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70  stance used to p
22f10 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20  rovide..        
22f20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65      /// an imple
22f30 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
22f40 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
22f50 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
22f60 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20   />..           
22f70 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d   /// interface..
22f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22f90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
22fa0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
22fb0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
22fc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
22fd0 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20     SQLiteModule 
22fe0 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
22ff0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
23000 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23010 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d            this.m
23020 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c 65 3b 0d  odule = module;.
23030 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
23040 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
23050 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
23060 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
23070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
230b0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
230c0 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20   Private Static 
230d0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
230e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
230f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
23100 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61 62  /// Sets the tab
23110 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  le error message
23120 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64   to one that ind
23130 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69 76  icates the nativ
23140 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
23150 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  // module implem
23160 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20  entation is not 
23170 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
23180 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
23190 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
231a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
231b0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
231c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
231d0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
231e0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
231f0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
23200 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
23210 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
23220 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23230 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
23240 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
23250 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65 20  e value of <see 
23260 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
23270 72 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f 3e 2e  rCode.Error" />.
23280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23290 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
232a0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
232b0 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45  e static SQLiteE
232c0 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65 4e  rrorCode ModuleN
232d0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
232e0 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
232f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
23300 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
23310 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
23320 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23330 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
23340 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 56 74 61  Error(null, pVta
23350 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72  b, DefaultLogErr
23360 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
23370 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c            Defaul
23380 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20  tLogExceptions, 
23390 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
233a0 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b  leErrorMessage);
233b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
233c0 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
233d0 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
233e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
233f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23440 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
23450 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
23460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23470 2f 20 53 65 74 73 20 74 68 65 20 74 61 62 6c 65  / Sets the table
23480 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74   error message t
23490 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64 69 63  o one that indic
234a0 61 74 65 73 20 74 68 65 20 6e 61 74 69 76 65 0d  ates the native.
234b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
234c0 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
234d0 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76  tation is not av
234e0 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
234f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
23500 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
23510 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23520 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
23530 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
23540 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
23550 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
23560 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
23570 76 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ved..           
23580 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d   /// structure..
23590 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
235a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
235b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
235c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
235d0 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
235e0 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
235f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
23600 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  ror" />...      
23610 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
23620 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
23630 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
23640 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
23650 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
23660 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 0d  bleCursorError(.
23670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23680 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
23690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
236a0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
236b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
236c0 20 20 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f     SetCursorErro
236d0 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73 6f 72 2c  r(null, pCursor,
236e0 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72   DefaultLogError
236f0 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
23700 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 4c          DefaultL
23710 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 4d 6f  ogExceptions, Mo
23720 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
23730 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a  ErrorMessage);..
23740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23750 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
23760 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
23770 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
23780 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
23790 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
237a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
237b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
237f0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
23800 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
23810 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20  dule Members..  
23820 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
23830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23840 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
23850 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
23860 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
23870 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
23880 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
23890 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
238a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
238b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44   <param name="pD
238c0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
238d0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
238e0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
238f0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
23900 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
23910 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23920 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
23930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23940 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a  m name="pAux">..
23950 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23960 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
23970 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
23980 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
23990 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
239a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
239b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
239c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
239d0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
239e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
239f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
23a00 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
23a10 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
23a20 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
23a30 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23a50 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
23a60 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
23a70 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
23a80 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
23a90 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
23aa0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
23ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23ac0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
23ae0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
23af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23b00 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
23b10 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
23b20 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
23b30 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
23b40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
23b50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
23b60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
23b70 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20  ame="pError">.. 
23b80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
23b90 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
23ba0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
23bb0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
23bc0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
23bd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23be0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
23bf0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
23c00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23c10 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
23c20 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
23c30 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
23c40 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
23c50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
23c60 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
23c70 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
23c80 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
23c90 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
23ca0 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
23cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23cc0 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
23cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ce0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
23cf0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
23d00 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
23d10 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
23d20 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
23d30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
23d40 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
23d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
23d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
23d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23d80 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
23d90 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
23da0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
23db0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
23dc0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
23dd0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
23de0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
23df0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
23e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
23e10 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
23e20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
23e30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23e40 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
23e50 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
23e60 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
23e70 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
23e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
23e90 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
23ea0 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
23eb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23ec0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
23ed0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
23ee0 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
23ef0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23f00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23f10 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  n module.xCreate
23f20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23f30 20 20 20 20 20 20 20 70 44 62 2c 20 70 41 75 78         pDb, pAux
23f40 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65  , argc, argv, re
23f50 66 20 70 56 74 61 62 2c 20 72 65 66 20 70 45 72  f pVtab, ref pEr
23f60 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
23f70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
23f80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
23f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23fd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
23fe0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
23ff0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24000 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24010 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
24020 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
24030 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24040 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
24050 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24060 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22  param name="pDb"
24070 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24080 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
24090 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
240a0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
240b0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
240c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
240d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
240e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
240f0 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20   name="pAux">.. 
24100 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24110 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24120 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24130 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
24140 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24160 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
24170 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
24180 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
24190 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
241a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
241b0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
241c0 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
241d0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
241e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
241f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24200 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
24210 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
24220 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
24230 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
24240 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
24250 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
24260 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
24270 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24280 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
24290 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
242a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
242b0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
242c0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
242d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
242e0 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
242f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24300 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
24310 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
24320 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
24330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24340 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24350 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24360 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
24370 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
24380 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24390 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
243a0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
243b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
243c0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
243d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
243e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
243f0 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
24400 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24410 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
24420 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
24430 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24440 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
24450 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
24460 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
24470 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
24480 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Aux,..          
24490 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
244a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
244b0 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
244c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
244d0 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
244e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
244f0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
24500 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
24510 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
24520 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24530 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
24540 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
24550 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
24560 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
24570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
24580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24590 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
245a0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
245b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
245c0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
245d0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
245e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
245f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24600 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53  pError = SQLiteS
24610 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72  tring.Utf8IntPtr
24620 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20  FromString(..   
24630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24640 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76       ModuleNotAv
24650 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73  ailableErrorMess
24660 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  age);....       
24670 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
24680 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
24690 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20  ode.Error;..    
246a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
246b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
246c0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
246d0 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
246e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44                pD
246f0 62 2c 20 70 41 75 78 2c 20 61 72 67 63 2c 20 61  b, pAux, argc, a
24700 72 67 76 2c 20 72 65 66 20 70 56 74 61 62 2c 20  rgv, ref pVtab, 
24710 72 65 66 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20  ref pError);..  
24720 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
24730 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
24740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24790 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
247a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
247b0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
247c0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
247d0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
247e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
247f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
24800 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24810 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
24820 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
24830 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
24840 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
24850 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
24860 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
24870 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24880 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
24890 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
248a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
248b0 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20  me="pIndex">..  
248c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
248d0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
248e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
248f0 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
24900 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24910 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
24920 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
24930 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
24940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24950 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24960 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24970 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
24980 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
24990 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
249a0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
249b0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
249c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
249d0 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
249e0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
249f0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
24a00 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
24a10 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 20  tr pIndex..     
24a20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
24a30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24a40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
24a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24a60 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
24a70 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
24a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24a90 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
24aa0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
24ab0 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
24ac0 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
24ad0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
24ae0 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
24af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b00 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
24b10 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
24b20 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
24b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24b40 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
24b50 78 42 65 73 74 49 6e 64 65 78 28 70 56 74 61 62  xBestIndex(pVtab
24b60 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20  , pIndex);..    
24b70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
24b80 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
24b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24be0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
24bf0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
24c00 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
24c10 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
24c20 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f  e.xDisconnect" /
24c30 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
24c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
24c50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
24c60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
24c70 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
24c80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
24c90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
24ca0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
24cb0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22  ule.xDisconnect"
24cc0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24cd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
24ce0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
24cf0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
24d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24d10 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24d20 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24d30 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
24d40 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
24d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24d60 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
24d70 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
24d80 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24d90 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20   xDisconnect(.. 
24da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
24db0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
24dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
24dd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
24df0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
24e00 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
24e10 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
24e20 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
24e30 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
24e40 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
24e50 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
24e60 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
24e70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24e80 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
24e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24ea0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
24eb0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
24ec0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
24ed0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24ee0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
24ef0 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 70 56  e.xDisconnect(pV
24f00 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
24f10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24f20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
24f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
24f80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
24f90 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24fa0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24fb0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  NativeModule.xDe
24fc0 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
24fd0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24fe0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
24ff0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25000 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
25010 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
25020 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25030 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25040 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
25050 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
25060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25070 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
25080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
25090 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
250a0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
250b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
250c0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
250d0 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f  estroy" /> metho
250e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
250f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
25100 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
25110 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
25120 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  de xDestroy(..  
25130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
25140 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
25150 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
25160 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
25170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25190 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
251a0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
251b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
251c0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
251d0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
251e0 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
251f0 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
25200 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
25210 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
25220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25230 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
25240 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
25250 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
25260 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
25270 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
25280 2e 78 44 65 73 74 72 6f 79 28 70 56 74 61 62 29  .xDestroy(pVtab)
25290 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
252a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
252b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
25300 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
25310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25320 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25330 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25340 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20  veModule.xOpen" 
25350 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25360 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
25370 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
25380 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
25390 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
253a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
253b0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
253c0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
253d0 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
253e0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
253f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25410 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
25420 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
25430 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
25440 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
25450 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
25460 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f  .xOpen" /> metho
25470 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25480 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25490 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
254a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
254b0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
254c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
254d0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
254e0 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
254f0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25500 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
25510 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
25520 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
25530 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  e xOpen(..      
25540 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
25550 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
25560 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
25570 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
25580 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
25590 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
255a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
255b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
255c0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
255d0 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
255e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
255f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
25600 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
25610 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
25620 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
25630 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
25640 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
25650 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25660 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
25670 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
25680 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
25690 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
256a0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
256b0 65 2e 78 4f 70 65 6e 28 70 56 74 61 62 2c 20 72  e.xOpen(pVtab, r
256c0 65 66 20 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20  ef pCursor);..  
256d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
256e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
256f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25740 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
25750 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25760 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25770 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25780 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
25790 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
257a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
257b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
257c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
257d0 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
257e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
257f0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25800 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25810 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65  le.xClose" /> me
25820 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25830 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25840 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25850 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25860 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25870 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25880 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25890 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65  le.xClose" /> me
258a0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
258b0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
258c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
258d0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
258e0 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20  rCode xClose(.. 
258f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
25900 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
25910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
25920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25940 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
25950 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
25960 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
25970 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
25980 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
25990 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
259a0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
259b0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
259c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
259d0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
259e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
259f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
25a00 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
25a10 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
25a20 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
25a30 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25a40 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 28 70 43  module.xClose(pC
25a50 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
25a60 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
25a70 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
25a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
25ac0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
25ad0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
25ae0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25af0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25b00 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25b10 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
25b20 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25b30 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
25b40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25b50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
25b60 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
25b70 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25b80 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25b90 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25ba0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
25bb0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25bc0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25bd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25be0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75  aram name="idxNu
25bf0 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  m">..           
25c00 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25c10 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25c20 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
25c30 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
25c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25c50 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25c60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
25c70 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22 3e  m name="idxStr">
25c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25c90 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25ca0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25cb0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
25cc0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
25cd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
25ce0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
25cf0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
25d00 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20  ame="argc">..   
25d10 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25d20 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25d30 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25d40 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
25d50 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
25d60 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
25d70 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25d80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25d90 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
25da0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25db0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25dc0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25dd0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
25de0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25df0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25e00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
25e10 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
25e20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25e30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25e40 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25e50 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
25e60 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25e70 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
25e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
25e90 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
25ea0 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20  ode xFilter(..  
25eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
25ec0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
25ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25ee0 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20  nt idxNum,..    
25ef0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
25f00 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20  tr idxStr,..    
25f10 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
25f20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  argc,..         
25f30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
25f40 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gv..            
25f50 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
25f60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25f70 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
25f80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
25f90 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
25fa0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
25fb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
25fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
25fd0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
25fe0 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
25ff0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26000 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
26010 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
26020 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
26030 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
26040 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72  lableCursorError
26050 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20  (pCursor);....  
26060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26070 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69 6c  turn module.xFil
26080 74 65 72 28 70 43 75 72 73 6f 72 2c 20 69 64 78  ter(pCursor, idx
26090 4e 75 6d 2c 20 69 64 78 53 74 72 2c 20 61 72 67  Num, idxStr, arg
260a0 63 2c 20 61 72 67 76 29 3b 0d 0a 20 20 20 20 20  c, argv);..     
260b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
260c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
260d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26110 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26120 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26130 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26140 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26150 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26160 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f  .xNext" /> metho
26170 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26180 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
26190 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
261a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
261b0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
261c0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
261d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
261e0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
261f0 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Next" /> method.
26200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26210 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26220 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
26230 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26240 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26250 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26260 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e  eNativeModule.xN
26270 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ext" /> method..
26280 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26290 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
262a0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
262b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
262c0 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
262d0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
262e0 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
262f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26300 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26310 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26330 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
26340 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
26350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26360 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
26370 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
26380 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
26390 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
263a0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
263b0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
263c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263d0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
263e0 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45  AvailableCursorE
263f0 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rror(pCursor);..
26400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26410 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
26420 78 4e 65 78 74 28 70 43 75 72 73 6f 72 29 3b 0d  xNext(pCursor);.
26430 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26490 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
264a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
264b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
264c0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
264d0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
264e0 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
264f0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26500 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
26510 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
26520 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26530 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
26540 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26550 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26560 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26570 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74  ule.xEof" /> met
26580 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26590 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
265a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
265b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
265c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
265d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
265e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
265f0 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f  e.xEof" /> metho
26600 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26610 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
26620 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
26630 69 63 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20  ic int xEof(..  
26640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
26650 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
26660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
26670 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
26680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26690 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
266a0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
266b0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
266c0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
266d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
266e0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
266f0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
26700 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
26710 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
26720 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
26730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26740 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26750 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
26760 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f  otAvailableCurso
26770 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b  rError(pCursor);
26780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26790 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0d        return 1;.
267a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
267b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
267c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
267d0 75 6c 65 2e 78 45 6f 66 28 70 43 75 72 73 6f 72  ule.xEof(pCursor
267e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
267f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
26800 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26840 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
26850 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
26860 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26870 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26880 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26890 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
268a0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
268b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
268c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
268d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
268e0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
268f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26900 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26910 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26920 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
26930 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
26940 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26950 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
26960 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26970 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e  name="pContext">
26980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26990 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
269a0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
269b0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
269c0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
269d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
269e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
269f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26a00 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
26a10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26a20 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26a30 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26a40 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
26a50 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
26a60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
26a70 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
26a80 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
26a90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
26aa0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
26ab0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
26ac0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f  odule.xColumn" /
26ad0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26ae0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
26af0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26b00 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
26b10 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d  ErrorCode xColum
26b20 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
26b30 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
26b40 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
26b50 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
26b60 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  text,..         
26b70 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
26b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26b90 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
26ba0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26bb0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
26bc0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
26bd0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
26be0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
26bf0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
26c00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
26c10 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
26c20 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
26c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26c40 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
26c50 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
26c60 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26c70 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
26c80 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
26c90 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
26ca0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
26cb0 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  rn module.xColum
26cc0 6e 28 70 43 75 72 73 6f 72 2c 20 70 43 6f 6e 74  n(pCursor, pCont
26cd0 65 78 74 2c 20 69 6e 64 65 78 29 3b 0d 0a 20 20  ext, index);..  
26ce0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
26cf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
26d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26d50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26d70 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26d80 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26d90 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d  ule.xRowId" /> m
26da0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26db0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
26dc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
26dd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
26de0 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
26df0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26e00 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26e10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26e20 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65  le.xRowId" /> me
26e30 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26e40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
26e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26e60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f   <param name="ro
26e70 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  wId">..         
26e80 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26e90 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26ea0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
26eb0 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
26ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26ed0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
26ef0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26f00 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26f10 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26f20 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
26f30 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
26f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26f50 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
26f60 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
26f70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26f80 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20   xRowId(..      
26f90 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
26fa0 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
26fb0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c             ref l
26fc0 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20  ong rowId..     
26fd0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
26fe0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27010 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
27020 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
27030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27040 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27050 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
27060 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
27070 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
27080 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
27090 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
270a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270b0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
270c0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
270d0 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
270e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
270f0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
27100 6c 65 2e 78 52 6f 77 49 64 28 70 43 75 72 73 6f  le.xRowId(pCurso
27110 72 2c 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a  r, ref rowId);..
27120 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
27130 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27190 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
271a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
271b0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
271c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
271d0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
271e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
271f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
27200 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
27210 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27220 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
27230 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27240 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27250 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27260 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20  ule.xUpdate" /> 
27270 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
27280 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
27290 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
272a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
272b0 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
272c0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
272d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
272e0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
272f0 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Update" /> metho
27300 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27310 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27320 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
27330 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
27340 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27350 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27360 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27370 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
27380 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
27390 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
273a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
273b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
273c0 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20  name="rowId">.. 
273d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
273e0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
273f0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
27400 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
27410 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27420 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27430 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
27440 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
27450 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27460 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27470 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27480 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
27490 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
274a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
274b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
274c0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
274d0 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61  eErrorCode xUpda
274e0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
274f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
27500 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
27510 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
27520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
27530 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
27540 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
27550 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
27560 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
27570 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
27580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27590 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
275a0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
275b0 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
275c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
275d0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
275e0 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
275f0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
27600 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
27610 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
27620 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
27630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27640 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
27650 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
27660 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
27670 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27680 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
27690 65 2e 78 55 70 64 61 74 65 28 70 56 74 61 62 2c  e.xUpdate(pVtab,
276a0 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65 66   argc, argv, ref
276b0 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20 20   rowId);..      
276c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
276d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
276e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27720 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
27730 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
27740 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27750 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27760 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27770 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
27780 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27790 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
277a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
277b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
277c0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
277d0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
277e0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
277f0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
27800 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  gin" /> method..
27810 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27820 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
27830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
27840 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
27850 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27860 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27870 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
27880 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  gin" /> method..
27890 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
278a0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
278b0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
278c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
278d0 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20  xBegin(..       
278e0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
278f0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
27900 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
27910 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27920 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
27930 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27940 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
27950 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
27960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27980 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
27990 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
279a0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
279b0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
279c0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
279d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
279e0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
279f0 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
27a00 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
27a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27a20 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 67  turn module.xBeg
27a30 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  in(pVtab);..    
27a40 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
27a50 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
27a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27aa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27ab0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27ac0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27ad0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27ae0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27af0 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
27b00 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27b10 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
27b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27b30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
27b40 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
27b50 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27b60 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27b70 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
27b80 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ync" /> method..
27b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27ba0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
27bb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
27bc0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
27bd0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27be0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27bf0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  NativeModule.xSy
27c00 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nc" /> method...
27c10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27c20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
27c30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
27c40 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
27c50 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20  Sync(..         
27c60 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
27c70 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
27c80 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
27c90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27ca0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27cb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
27cc0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
27cd0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
27ce0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
27cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d00 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
27d10 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
27d20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27d30 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
27d40 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
27d50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27d60 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
27d70 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
27d80 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
27d90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
27da0 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 28  rn module.xSync(
27db0 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20  pVtab);..       
27dc0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27dd0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
27de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
27e20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
27e30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27e40 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
27e50 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27e60 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27e70 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f  Commit" /> metho
27e80 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27e90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
27ea0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27eb0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
27ec0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
27ed0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27ee0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27ef0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
27f00 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  mmit" /> method.
27f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27f20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
27f40 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
27f50 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27f60 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27f70 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
27f80 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64  ommit" /> method
27f90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27fa0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
27fb0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
27fc0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
27fd0 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  e xCommit(..    
27fe0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
27ff0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
28000 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
28010 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28020 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28040 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
28050 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
28060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28070 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28080 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
28090 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
280a0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
280b0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
280c0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
280d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280e0 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
280f0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
28100 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
28110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28120 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
28130 43 6f 6d 6d 69 74 28 70 56 74 61 62 29 3b 0d 0a  Commit(pVtab);..
28140 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
28150 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
281b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
281c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
281d0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
281e0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
281f0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22  odule.xRollback"
28200 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28210 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
28220 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
28230 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28240 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
28250 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28260 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28270 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28280 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22  odule.xRollback"
28290 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
282a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
282b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
282c0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
282d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
282e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
282f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28300 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
28310 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
28320 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28330 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
28340 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
28350 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
28360 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
28370 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
28380 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
28390 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
283a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
283b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
283c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
283d0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
283e0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
283f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28400 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
28410 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
28420 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
28430 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
28440 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
28450 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
28460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28470 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
28480 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
28490 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
284a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284b0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
284c0 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62 29 3b 0d  ollback(pVtab);.
284d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
284e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
284f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28530 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
28540 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28550 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28560 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
28570 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
28580 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
28590 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
285a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
285b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
285c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
285d0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
285e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
285f0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28600 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28610 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
28620 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
28630 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
28640 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28650 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28660 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 41 72  <param name="nAr
28670 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g">..           
28680 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28690 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
286a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
286b0 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
286c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
286d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
286e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
286f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
28700 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ame">..         
28710 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
28720 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
28730 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
28740 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
28750 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28760 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
28770 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28780 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
28790 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20  callback">..    
287a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
287b0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
287c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
287d0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
287e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
287f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28800 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28810 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
28820 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
28830 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
28840 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28850 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28860 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
28870 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
28880 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
28890 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
288a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
288b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
288c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
288d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
288e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
288f0 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
28900 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28910 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
28920 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
28930 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
28940 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a  xFindFunction(..
28950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28960 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
28970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28980 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20  nt nArg,..      
28990 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
289a0 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20   zName,..       
289b0 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
289c0 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  iteCallback call
289d0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
289e0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
289f0 72 20 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20  r pClientData.. 
28a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
28a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28a30 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28a40 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
28a50 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
28a60 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
28a70 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
28a80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
28a90 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
28aa0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
28ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
28ac0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
28ad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28ae0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28af0 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
28b00 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
28b10 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
28b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b30 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20      return 0;.. 
28b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
28b50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28b60 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
28b70 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  e.xFindFunction(
28b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28b90 20 20 20 20 20 20 70 56 74 61 62 2c 20 6e 41 72        pVtab, nAr
28ba0 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66 20 63 61  g, zName, ref ca
28bb0 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70 43 6c 69  llback, ref pCli
28bc0 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  entData);..     
28bd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
28be0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
28c30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28c40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28c50 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28c60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28c70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28c80 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74  .xRename" /> met
28c90 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
28ca0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
28cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28cc0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
28cd0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
28ce0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28cf0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28d00 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28d10 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
28d20 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28d30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28d40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28d50 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22  aram name="zNew"
28d60 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28d70 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28d80 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28d90 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
28da0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
28db0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28dc0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
28dd0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
28de0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
28df0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28e00 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28e10 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
28e20 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
28e30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28e40 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
28e50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
28e60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
28e70 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
28e80 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
28e90 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
28ea0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
28eb0 4e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20  New..           
28ec0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
28ed0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28ee0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28ef0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
28f00 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
28f10 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
28f20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f40 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
28f50 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
28f60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28f70 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
28f80 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
28f90 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28fa0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
28fb0 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
28fc0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
28fd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28fe0 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  rn module.xRenam
28ff0 65 28 70 56 74 61 62 2c 20 7a 4e 65 77 29 3b 0d  e(pVtab, zNew);.
29000 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
29010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29060 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
29070 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
29080 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29090 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
290a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
290b0 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
290c0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
290d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
290e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
290f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29100 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
29110 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29120 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29130 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29140 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
29150 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nt" /> method...
29160 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29170 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
29180 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
29190 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e   name="iSavepoin
291a0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t">..           
291b0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
291c0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
291d0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
291e0 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
291f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29200 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29210 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
29220 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
29230 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29240 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29250 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29260 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
29270 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29280 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
29290 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
292a0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
292b0 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e  orCode xSavepoin
292c0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
292d0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
292e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
292f0 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
29300 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
29310 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
29320 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29330 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29340 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
29350 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
29360 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
29370 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
29380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29390 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
293a0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
293b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
293c0 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
293d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
293e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
293f0 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
29400 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
29410 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
29420 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
29430 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69   module.xSavepoi
29440 6e 74 28 70 56 74 61 62 2c 20 69 53 61 76 65 70  nt(pVtab, iSavep
29450 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  oint);..        
29460 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29470 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
294a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
294b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
294c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
294d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
294e0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
294f0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29500 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
29510 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f  elease" /> metho
29520 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29530 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
29540 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29550 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
29560 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
29570 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29580 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29590 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
295a0 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  lease" /> method
295b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
295c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
295d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
295e0 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
295f0 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
29600 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29610 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29620 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29630 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68  Release" /> meth
29640 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29650 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
29660 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29670 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
29680 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29690 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
296a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
296b0 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
296c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
296d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
296e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
296f0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
29700 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d  rCode xRelease(.
29710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29720 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
29730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29740 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
29750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29760 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
29770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29780 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
29790 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
297a0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
297b0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
297c0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
297d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
297e0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
297f0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
29800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
29810 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
29820 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
29830 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
29840 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
29850 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
29860 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
29870 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
29880 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 28 70 56  dule.xRelease(pV
29890 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
298a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
298b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
298c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
298d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
298e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
298f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29900 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
29910 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
29920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29930 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29940 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29950 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
29960 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ckTo" /> method.
29970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29980 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
29990 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
299a0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
299b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
299c0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
299d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
299e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
299f0 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f  backTo" /> metho
29a00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29a10 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29a20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
29a30 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
29a40 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
29a50 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29a60 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29a70 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29a80 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20  xRollbackTo" /> 
29a90 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29aa0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29ab0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29ac0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
29ad0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29ae0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29af0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29b00 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
29b10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
29b20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29b30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
29b40 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
29b50 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
29b60 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
29b70 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29b80 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
29b90 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
29ba0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
29bb0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29bc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29bd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
29be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bf0 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
29c00 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
29c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29c20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
29c30 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
29c40 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
29c50 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
29c60 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
29c70 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
29c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c90 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
29ca0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
29cb0 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
29cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29cd0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
29ce0 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56 74 61 62  RollbackTo(pVtab
29cf0 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  , iSavepoint);..
29d00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
29d10 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
29d20 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
29d30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d70 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29d80 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
29d90 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62  IDisposable Memb
29da0 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ers..           
29db0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
29dc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29dd0 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73  Disposes of this
29de0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
29df0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29e00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
29e10 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
29e20 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
29e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
29e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29e50 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
29e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29e70 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
29e80 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
29e90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29ea0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
29eb0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
29ec0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
29f10 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
29f20 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
29f30 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
29f40 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
29f50 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
29f60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29f70 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
29f80 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
29f90 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
29fa0 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
29fb0 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74  ception" /> if t
29fc0 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
29fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
29fe0 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69  ance has been di
29ff0 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
2a000 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2a010 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2a020 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
2a030 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
2a040 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
2a050 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48         {..#if TH
2a060 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d  ROW_ON_DISPOSED.
2a070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a080 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a   if (disposed)..
2a090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a0b0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
2a0c0 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45   ObjectDisposedE
2a0d0 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
2a0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0f0 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65     typeof(SQLite
2a100 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29 2e 4e 61  NativeModule).Na
2a110 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
2a120 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2a130 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2a140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a190 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2a1a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2a1b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a1c0 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73  Disposes of this
2a1d0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2a1e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a1f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2a200 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a210 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
2a220 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
2a230 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
2a240 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
2a250 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64   is being called
2a260 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
2a270 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
2a280 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22  cref="Dispose()"
2a290 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72   /> method.  Zer
2a2a0 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
2a2b0 20 69 73 20 62 65 69 6e 67 0d 0a 20 20 20 20 20   is being..     
2a2c0 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65         /// calle
2a2d0 64 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c  d from the final
2a2e0 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  izer...         
2a2f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a300 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
2a310 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65  vate /* protecte
2a320 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69  d virtual */ voi
2a330 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
2a340 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
2a350 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a360 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
2a370 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
2a380 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3a0 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67   //if (disposing
2a3b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2a3c0 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20         //{..    
2a3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3e0 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
2a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
2a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a420 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65  //    // dispose
2a430 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
2a440 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
2a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a460 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
2a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
2a490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4a0 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  //}....         
2a4b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2a4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2a4f0 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
2a500 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
2a510 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
2a520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a530 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a570 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2a580 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2a590 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20 69 73 20  : The module is 
2a5a0 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20 75 73 3b  not owned by us;
2a5b0 20 74 68 65 72 65 66 6f 72 65 2c 20 64 6f 20 6e   therefore, do n
2a5c0 6f 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ot..            
2a5d0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2a5e0 20 64 69 73 70 6f 73 65 20 69 74 2e 0d 0a 20 20   dispose it...  
2a5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a600 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2a610 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2a620 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  dule != null).. 
2a630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a640 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 20 3d 20         module = 
2a650 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
2a660 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
2a670 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
2a680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2a690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2a6a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
2a6b0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2a6c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a710 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
2a720 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
2a730 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2a740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a750 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a       /// Finaliz
2a760 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  es this object i
2a770 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2a780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2a790 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2a7a0 20 20 7e 53 51 4c 69 74 65 4e 61 74 69 76 65 4d    ~SQLiteNativeM
2a7b0 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  odule()..       
2a7c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a7d0 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
2a7e0 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
2a7f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2a800 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2a810 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2a820 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2a830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a880 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
2a890 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
2a8a0 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f  tants..        /
2a8b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2a8c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65        /// The de
2a8d0 66 61 75 6c 74 20 76 65 72 73 69 6f 6e 20 6f 66  fault version of
2a8e0 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
2a8f0 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  te3_module struc
2a900 74 75 72 65 20 69 6e 20 75 73 65 2e 0d 0a 20 20  ture in use...  
2a910 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2a920 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
2a930 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
2a940 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66 61 75 6c  donly int Defaul
2a950 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 20 3d  tModuleVersion =
2a960 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e   2;..        #en
2a970 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2a980 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a9d0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
2a9e0 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
2a9f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2aa00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2aa10 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
2aa20 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6e  d to store the n
2aa30 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
2aa40 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 0d 0a  dule structure..
2aa50 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
2aa60 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
2aa70 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2aa80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2aa90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2aaa0 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66     private Unsaf
2aab0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2aac0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61  qlite3_module na
2aad0 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20  tiveModule;.... 
2aae0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2aaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ab30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2ab40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2ab50 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
2ab60 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65  is used to store
2ab70 20 74 68 65 20 64 65 73 74 72 75 63 74 6f 72 20   the destructor 
2ab80 64 65 6c 65 67 61 74 65 20 74 6f 20 62 65 20 70  delegate to be p
2ab90 61 73 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20  assed to..      
2aba0 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65    /// the SQLite
2abb0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 76 69   core library vi
2abc0 61 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72  a the sqlite3_cr
2abd0 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
2abe0 6d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20  module()..      
2abf0 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d    /// function..
2ac00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2ac10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2ac20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e   private UnsafeN
2ac30 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
2ac40 73 74 72 6f 79 4d 6f 64 75 6c 65 20 64 65 73 74  stroyModule dest
2ac50 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20  royModule;....  
2ac60 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2acb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2acc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2acd0 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
2ace0 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20  s used to store 
2acf0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
2ad00 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
2ad10 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
2ad20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 72 65  /// structure re
2ad30 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 73 71  turned by the sq
2ad40 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
2ad50 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 0d 0a  posable_module..
2ad60 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63          /// func
2ad70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2ad80 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2ad90 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
2ada0 6e 74 50 74 72 20 64 69 73 70 6f 73 61 62 6c 65  ntPtr disposable
2adb0 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Module;....     
2adc0 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2ae10 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2ae20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2ae30 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2ae40 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2ae50 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73  This field is us
2ae60 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 62  ed to hold the b
2ae70 6c 6f 63 6b 20 6f 66 20 6e 61 74 69 76 65 20 6d  lock of native m
2ae80 65 6d 6f 72 79 20 74 68 61 74 20 63 6f 6e 74 61  emory that conta
2ae90 69 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ins..        ///
2aea0 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
2aeb0 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  te3_module struc
2aec0 74 75 72 65 20 61 73 73 6f 63 69 61 74 65 64 20  ture associated 
2aed0 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
2aee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
2aef0 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e  stance when runn
2af00 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20  ing on the .NET 
2af10 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
2af20 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  k...        /// 
2af30 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2af40 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50      private IntP
2af50 74 72 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  tr pNativeModule
2af60 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
2af70 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2af80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2afc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2afd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2afe0 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2aff0 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
2b000 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
2b010 20 69 6e 73 74 61 6e 63 65 73 20 61 73 73 6f 63   instances assoc
2b020 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
2b030 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64  // with this mod
2b040 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76 65  ule.  The native
2b050 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
2b060 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
2b070 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
2b080 2f 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  / structure is u
2b090 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20  sed to key into 
2b0a0 74 68 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e  this collection.
2b0b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2b0c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b0d0 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f    private Dictio
2b0e0 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c  nary<IntPtr, SQL
2b0f0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 3e  iteVirtualTable>
2b100 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20 20 20 20   tables;....    
2b110 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b160 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2b170 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2b180 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
2b190 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2b1a0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
2b1b0 63 75 72 73 6f 72 20 69 6e 73 74 61 6e 63 65 73  cursor instances
2b1c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
2b1d0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
2b1e0 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20  is module.  The 
2b1f0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
2b200 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
2b210 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  // sqlite3_vtab_
2b220 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
2b230 74 72 75 63 74 75 72 65 20 69 73 20 75 73 65 64  tructure is used
2b240 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69   to key into thi
2b250 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  s..        /// c
2b260 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  ollection...    
2b270 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b280 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
2b290 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 49  ate Dictionary<I
2b2a0 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72  ntPtr, SQLiteVir
2b2b0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e  tualTableCursor>
2b2c0 20 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a 20 20 20   cursors;....   
2b2d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b320 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b330 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2b340 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2b350 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
2b360 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
2b370 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e   function instan
2b380 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ces..        ///
2b390 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2b3a0 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54   this module.  T
2b3b0 68 65 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74  he case-insensit
2b3c0 69 76 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d  ive function nam
2b3d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
2b3e0 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  nd the number of
2b3f0 20 61 72 67 75 6d 65 6e 74 73 20 28 77 69 74 68   arguments (with
2b400 20 2d 31 20 6d 65 61 6e 69 6e 67 20 22 61 6e 79   -1 meaning "any
2b410 22 29 20 61 72 65 20 75 73 65 64 20 74 6f 0d 0a  ") are used to..
2b420 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73          /// cons
2b430 74 72 75 63 74 20 74 68 65 20 73 74 72 69 6e 67  truct the string
2b440 20 74 68 61 74 20 69 73 20 75 73 65 64 20 74 6f   that is used to
2b450 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20 63   key into this c
2b460 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  ollection...    
2b470 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b480 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
2b490 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  ate Dictionary<s
2b4a0 74 72 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e  tring, SQLiteFun
2b4b0 63 74 69 6f 6e 3e 20 66 75 6e 63 74 69 6f 6e 73  ction> functions
2b4c0 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
2b4d0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2b4e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b520 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2b530 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
2b540 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
2b550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2b560 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2b570 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
2b580 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
2b590 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
2b5a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2b5b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2b5c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
2b5d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2b5e0 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
2b5f0 6d 6f 64 75 6c 65 2e 20 20 54 68 69 73 20 70 61  module.  This pa
2b600 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f 74 20 62  rameter cannot b
2b610 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  e null...       
2b620 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2b630 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2b640 4c 69 74 65 4d 6f 64 75 6c 65 28 73 74 72 69 6e  LiteModule(strin
2b650 67 20 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20  g name)..       
2b660 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b670 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  if (name == null
2b680 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b690 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
2b6a0 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
2b6b0 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a 0d 0a 20  on("name");.... 
2b6c0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2b6d0 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20  name = name;..  
2b6e0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
2b6f0 61 62 6c 65 73 20 3d 20 6e 65 77 20 44 69 63 74  ables = new Dict
2b700 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53  ionary<IntPtr, S
2b710 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
2b720 65 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e>();..         
2b730 20 20 20 74 68 69 73 2e 63 75 72 73 6f 72 73 20     this.cursors 
2b740 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
2b750 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56  <IntPtr, SQLiteV
2b760 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
2b770 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  r>();..         
2b780 20 20 20 74 68 69 73 2e 66 75 6e 63 74 69 6f 6e     this.function
2b790 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
2b7a0 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74  ry<string, SQLit
2b7b0 65 46 75 6e 63 74 69 6f 6e 3e 28 29 3b 0d 0a 20  eFunction>();.. 
2b7c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b7d0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2b7e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b830 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2b840 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68  on Internal Meth
2b850 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
2b860 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b870 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68      /// Calls th
2b880 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
2b890 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20  core library in 
2b8a0 6f 72 64 65 72 20 74 6f 20 63 72 65 61 74 65 20  order to create 
2b8b0 61 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f  a new..        /
2b8c0 2f 2f 20 64 69 73 70 6f 73 61 62 6c 65 20 6d 6f  // disposable mo
2b8d0 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  dule containing 
2b8e0 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  the implementati
2b8f0 6f 6e 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20  on of a virtual 
2b900 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
2b910 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2b920 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2b930 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a  am name="pDb">..
2b940 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2b950 6e 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20  native database 
2b960 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 69 6e 74  connection point
2b970 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  er to use...    
2b980 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2b990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
2b9a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2b9b0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
2b9c0 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
2b9d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2b9e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
2b9f0 65 72 6e 61 6c 20 62 6f 6f 6c 20 43 72 65 61 74  ernal bool Creat
2ba00 65 44 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c  eDisposableModul
2ba10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2ba20 49 6e 74 50 74 72 20 70 44 62 0d 0a 20 20 20 20  IntPtr pDb..    
2ba30 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2ba40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ba50 20 20 69 66 20 28 64 69 73 70 6f 73 61 62 6c 65    if (disposable
2ba60 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72  Module != IntPtr
2ba70 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2ba80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
2ba90 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
2baa0 20 20 20 20 49 6e 74 50 74 72 20 70 4e 61 6d 65      IntPtr pName
2bab0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
2bac0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
2bad0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2bae0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2baf0 20 20 20 70 4e 61 6d 65 20 3d 20 53 51 4c 69 74     pName = SQLit
2bb00 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50  eString.Utf8IntP
2bb10 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 6e 61 6d  trFromString(nam
2bb20 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2bb30 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
2bb40 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2bb50 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65  e3_module native
2bb60 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
2bb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6c                Al
2bb80 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75  locateNativeModu
2bb90 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le();....       
2bba0 20 20 20 20 20 20 20 20 20 64 65 73 74 72 6f 79           destroy
2bbb0 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73  Module = new Uns
2bbc0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2bbd0 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28  .xDestroyModule(
2bbe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bbf0 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f        xDestroyMo
2bc00 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  dule);....#if !P
2bc10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2bc20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2bc30 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
2bc40 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20  ableModule =..  
2bc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc60 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2bc70 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 72  thods.sqlite3_cr
2bc80 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
2bc90 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  module(..       
2bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcb0 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 72 65 66   pDb, pName, ref
2bcc0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49   nativeModule, I
2bcd0 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74  ntPtr.Zero, dest
2bce0 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20  royModule);.... 
2bcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2bd00 65 74 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c  eturn (disposabl
2bd10 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74  eModule != IntPt
2bd20 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c 69 66 20  r.Zero);..#elif 
2bd30 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
2bd40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bd50 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75    disposableModu
2bd60 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  le =..          
2bd70 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2bd80 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2bd90 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
2bda0 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69  posable_module_i
2bdb0 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20  nterop(..       
2bdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bdd0 70 44 62 2c 20 70 4e 61 6d 65 2c 20 41 6c 6c 6f  pDb, pName, Allo
2bde0 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  cateNativeModule
2bdf0 49 6e 74 65 72 6f 70 28 29 2c 0d 0a 20 20 20 20  Interop(),..    
2be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be10 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2be20 69 56 65 72 73 69 6f 6e 2c 20 6e 61 74 69 76 65  iVersion, native
2be30 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 2c 0d  Module.xCreate,.
2be40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2be50 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2be60 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 2c 20 6e  dule.xConnect, n
2be70 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
2be80 74 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20  tIndex,..       
2be90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bea0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  nativeModule.xDi
2beb0 73 63 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65  sconnect, native
2bec0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 2c  Module.xDestroy,
2bed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bee0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2bef0 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c 20 6e 61 74  odule.xOpen, nat
2bf00 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
2bf10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2bf20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2bf30 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 2c 20  Module.xFilter, 
2bf40 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65  nativeModule.xNe
2bf50 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt,..           
2bf60 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2bf70 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 2c 20 6e  veModule.xEof, n
2bf80 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
2bf90 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  umn,..          
2bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2bfb0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
2bfc0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2bfd0 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20  Update,..       
2bfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bff0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
2c000 67 69 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  gin, nativeModul
2c010 65 2e 78 53 79 6e 63 2c 0d 0a 20 20 20 20 20 20  e.xSync,..      
2c020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c030 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2c040 6f 6d 6d 69 74 2c 20 6e 61 74 69 76 65 4d 6f 64  ommit, nativeMod
2c050 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a  ule.xRollback,..
2c060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c070 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2c080 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
2c090 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  n, nativeModule.
2c0a0 78 52 65 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  xRename,..      
2c0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0c0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
2c0d0 61 76 65 70 6f 69 6e 74 2c 20 6e 61 74 69 76 65  avepoint, native
2c0e0 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 2c  Module.xRelease,
2c0f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c100 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2c110 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2c120 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  o, IntPtr.Zero, 
2c130 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  destroyModule);.
2c140 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c150 20 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f     return (dispo
2c160 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49  sableModule != I
2c170 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65  ntPtr.Zero);..#e
2c180 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2c190 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
2c1a0 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63  otImplementedExc
2c1b0 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69  eption();..#endi
2c1c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
2c1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
2c1e0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
2c1f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c200 20 20 20 20 20 20 69 66 20 28 70 4e 61 6d 65 20        if (pName 
2c210 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2c220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c230 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c240 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
2c250 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61 6d 65 29  mory.Free(pName)
2c260 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2c270 20 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 49         pName = I
2c280 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2c290 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2c2a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c2b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2c2c0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2c2d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c320 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c330 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2c340 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c350 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c360 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
2c370 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 62 79 20  od is called by 
2c380 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2c390 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68 65  library when the
2c3a0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
2c3b0 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61 73 73 6f   /// module asso
2c3c0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
2c3d0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2c3e0 20 69 73 20 62 65 69 6e 67 20 64 65 73 74 72 6f   is being destro
2c3f0 79 65 64 20 64 75 65 0d 0a 20 20 20 20 20 20 20  yed due..       
2c400 20 2f 2f 2f 20 74 6f 20 69 74 73 20 70 61 72 65   /// to its pare
2c410 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 65  nt connection be
2c420 69 6e 67 20 63 6c 6f 73 65 64 2e 20 20 49 74 20  ing closed.  It 
2c430 6d 61 79 20 61 6c 73 6f 20 62 65 20 63 61 6c 6c  may also be call
2c440 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  ed by..        /
2c450 2f 2f 20 74 68 65 20 22 76 74 73 68 69 6d 22 20  // the "vtshim" 
2c460 6d 6f 64 75 6c 65 20 69 66 2f 77 68 65 6e 20 74  module if/when t
2c470 68 65 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f  he sqlite3_dispo
2c480 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63  se_module() func
2c490 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tion..        //
2c4a0 2f 20 69 73 20 63 61 6c 6c 65 64 2e 0d 0a 20 20  / is called...  
2c4b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2c4c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2c4d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2c4e0 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20  ClientData">..  
2c4f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2c500 74 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70  tive user-data p
2c510 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65  ointer associate
2c520 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75  d with this modu
2c530 6c 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20  le, as it was.. 
2c540 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69         /// provi
2c550 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ded to the SQLit
2c560 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77  e core library w
2c570 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d  hen the native m
2c580 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a  odule instance..
2c590 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20          /// was 
2c5a0 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  created...      
2c5b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2c5c0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2c5d0 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64  void xDestroyMod
2c5e0 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
2c5f0 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74    IntPtr pClient
2c600 44 61 74 61 20 2f 2a 20 4e 4f 54 20 55 53 45 44  Data /* NOT USED
2c610 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2c620 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
2c630 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2c640 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2c650 54 45 3a 20 41 74 20 74 68 69 73 20 70 6f 69 6e  TE: At this poin
2c660 74 2c 20 6a 75 73 74 20 6d 61 6b 65 20 73 75 72  t, just make sur
2c670 65 20 74 68 61 74 20 74 68 69 73 20 6e 61 74 69  e that this nati
2c680 76 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  ve module..     
2c690 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2c6a0 68 61 6e 64 6c 65 20 69 73 20 6e 6f 74 20 72 65  handle is not re
2c6b0 75 73 65 64 2c 20 6e 6f 72 20 70 61 73 73 65 64  used, nor passed
2c6c0 20 69 6e 74 6f 20 74 68 65 20 6e 61 74 69 76 65   into the native
2c6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c6e0 20 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 64         sqlite3_d
2c6f0 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20  ispose_module() 
2c700 66 75 6e 63 74 69 6f 6e 20 6c 61 74 65 72 20 28  function later (
2c710 69 2e 65 2e 20 69 66 2f 77 68 65 6e 0d 0a 20 20  i.e. if/when..  
2c720 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2c730 20 20 20 74 68 65 20 44 69 73 70 6f 73 65 28 29     the Dispose()
2c740 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 69 73 20   method of this 
2c750 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
2c760 69 73 20 63 61 6c 6c 65 64 29 2e 0d 0a 20 20 20  is called)...   
2c770 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2c780 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 61           disposa
2c790 62 6c 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74 50  bleModule = IntP
2c7a0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
2c7b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2c7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c800 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2c810 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2c820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65  .        /// Cre
2c830 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
2c840 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
2c850 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  te_module struct
2c860 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ure using the.. 
2c870 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69         /// confi
2c880 67 75 72 65 64 20 28 6f 72 20 64 65 66 61 75 6c  gured (or defaul
2c890 74 29 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  t) <see cref="IS
2c8a0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2c8b0 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
2c8c0 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70  // interface imp
2c8d0 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20  lementation...  
2c8e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2c8f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2c900 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2c910 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
2c920 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c  ive sqlite_modul
2c930 65 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  e structure usin
2c940 67 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64  g the configured
2c950 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   (or..        //
2c960 2f 20 64 65 66 61 75 6c 74 29 20 3c 73 65 65 20  / default) <see 
2c970 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2c980 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
2c990 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20  terface..       
2c9a0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
2c9b0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
2c9c0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2c9d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
2c9e0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2c9f0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2ca00 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
2ca10 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  odule()..       
2ca20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ca30 72 65 74 75 72 6e 20 41 6c 6c 6f 63 61 74 65 4e  return AllocateN
2ca40 61 74 69 76 65 4d 6f 64 75 6c 65 28 47 65 74 4e  ativeModule(GetN
2ca50 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28  ativeModuleImpl(
2ca60 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ));..        }..
2ca70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cac0 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
2cad0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2cae0 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  RK..        /// 
2caf0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2cb00 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
2cb10 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6d 65 6d  nd returns a mem
2cb20 6f 72 79 20 62 6c 6f 63 6b 20 6f 62 74 61 69 6e  ory block obtain
2cb30 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ed from the SQLi
2cb40 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20  te core..       
2cb50 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 75 73 65   /// library use
2cb60 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6e  d to store the n
2cb70 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
2cb80 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 66  dule structure f
2cb90 6f 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  or this..       
2cba0 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74   /// object inst
2cbb0 61 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e  ance when runnin
2cbc0 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  g on the .NET Co
2cbd0 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e  mpact Framework.
2cbe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2cbf0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2cc00 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2cc10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2cc20 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
2cc30 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  to the native sq
2cc40 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72  lite3_module str
2cc50 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
2cc60 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2cc70 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2cc80 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65   IntPtr Allocate
2cc90 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65  NativeModuleInte
2cca0 72 6f 70 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  rop()..        {
2ccb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2ccc0 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20   (pNativeModule 
2ccd0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
2cce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2ccf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd00 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2cd10 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4e 6f 20      // HACK: No 
2cd20 65 61 73 79 20 77 61 79 20 74 6f 20 64 65 74 65  easy way to dete
2cd30 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f  rmine the size o
2cd40 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  f the native..  
2cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2cd60 20 20 20 20 20 20 20 73 71 6c 69 74 65 5f 6d 6f         sqlite_mo
2cd70 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 77  dule structure w
2cd80 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  hen running on t
2cd90 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 20  he .NET..       
2cda0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2cdb0 20 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77    Compact Framew
2cdc0 6f 72 6b 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ork; therefore, 
2cdd0 6a 75 73 74 20 62 61 73 65 20 74 68 65 20 73 69  just base the si
2cde0 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ze..            
2cdf0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 20      //       on 
2ce00 77 68 61 74 20 77 65 20 6b 6e 6f 77 3a 0d 0a 20  what we know:.. 
2ce10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ce20 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2ce30 20 20 20 2f 2f 20 20 20 20 20 20 20 54 68 65 72     //       Ther
2ce40 65 20 69 73 20 6f 6e 65 20 69 6e 74 65 67 65 72  e is one integer
2ce50 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   member...      
2ce60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2ce70 20 20 20 54 68 65 72 65 20 61 72 65 20 32 32 20     There are 22 
2ce80 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72  function pointer
2ce90 20 6d 65 6d 62 65 72 73 2e 0d 0a 20 20 20 20 20   members...     
2cea0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2ceb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
2cec0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 53  NativeModule = S
2ced0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
2cee0 63 61 74 65 28 32 33 20 2a 20 49 6e 74 50 74 72  cate(23 * IntPtr
2cef0 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
2cf00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
2cf10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20  NativeModule == 
2cf20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2cf30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf40 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 75 74 4f    throw new OutO
2cf50 66 4d 65 6d 6f 72 79 45 78 63 65 70 74 69 6f 6e  fMemoryException
2cf60 28 22 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  ("sqlite3_module
2cf70 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
2cf80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2cf90 20 20 72 65 74 75 72 6e 20 70 4e 61 74 69 76 65    return pNative
2cfa0 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
2cfb0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
2cfc0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2d010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2d020 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2d030 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
2d040 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69  returns the nati
2d050 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
2d060 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
2d070 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
2d080 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  / specified <see
2d090 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d0a0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
2d0b0 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20  nterface..      
2d0c0 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
2d0d0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2d0e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2d0f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2d100 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
2d110 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2d120 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2d130 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2d140 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69  " /> interface i
2d150 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f  mplementation to
2d160 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
2d170 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2d180 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2d190 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2d1a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2d1b0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d   native sqlite_m
2d1c0 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2d1d0 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2d1e0 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
2d1f0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2d200 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
2d210 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d   /> interface im
2d220 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
2d230 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2d240 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
2d250 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
2d260 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2d270 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63 61  e3_module Alloca
2d280 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d  teNativeModule(.
2d290 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 53 51  .            ISQ
2d2a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2d2b0 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20   module..       
2d2c0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2d2d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  {..            n
2d2e0 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 6e 65  ativeModule = ne
2d2f0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d300 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2d310 64 75 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  dule();..       
2d320 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d330 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20 44 65 66  e.iVersion = Def
2d340 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f  aultModuleVersio
2d350 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
2d360 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20    if (module != 
2d370 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2d380 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d390 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2d3a0 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77  le.xCreate = 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 43 72 65 61 74 65 28 0d 0a 20  hods.xCreate(.. 
2d3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3e0 20 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65    module.xCreate
2d3f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2d400 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2d410 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65  le.xConnect = 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 43 6f 6e 6e 65 63 74 28 0d  thods.xConnect(.
2d440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d450 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e       module.xCon
2d460 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nect);....      
2d470 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d480 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
2d490 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  x = new UnsafeNa
2d4a0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73  tiveMethods.xBes
2d4b0 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
2d4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2d4d0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 29 3b  ule.xBestIndex);
2d4e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d4f0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d500 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e  .xDisconnect = n
2d510 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d520 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65  ethods.xDisconne
2d530 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
2d540 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2d550 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  xDisconnect);...
2d560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d570 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44   nativeModule.xD
2d580 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73  estroy = new Uns
2d590 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2d5a0 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20  .xDestroy(..    
2d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d5c0 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 29  module.xDestroy)
2d5d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d5e0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d5f0 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e  e.xOpen = new Un
2d600 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d610 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  s.xOpen(..      
2d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2d630 64 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d 0a 0d 0a  dule.xOpen);....
2d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d650 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  nativeModule.xCl
2d660 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ose = new Unsafe
2d670 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2d680 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lose(..         
2d690 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d6a0 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20  e.xClose);....  
2d6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2d6c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2d6d0 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  er = new UnsafeN
2d6e0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
2d6f0 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
2d700 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d710 65 2e 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20  e.xFilter);.... 
2d720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2d730 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
2d740 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
2d750 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78  tiveMethods.xNex
2d760 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2d770 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2d780 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Next);....      
2d790 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d7a0 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65  Module.xEof = ne
2d7b0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d7c0 74 68 6f 64 73 2e 78 45 6f 66 28 6d 6f 64 75 6c  thods.xEof(modul
2d7d0 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20  e.xEof);....    
2d7e0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2d7f0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
2d800 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2d810 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75  iveMethods.xColu
2d820 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn(..           
2d830 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2d840 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20  xColumn);....   
2d850 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d860 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
2d870 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2d880 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49  iveMethods.xRowI
2d890 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
2d8a0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2d8b0 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  RowId);....     
2d8c0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2d8d0 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  eModule.xUpdate 
2d8e0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d8f0 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74  veMethods.xUpdat
2d900 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2d910 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2d920 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20  Update);....    
2d930 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2d940 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20  veModule.xBegin 
2d950 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2d960 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e  veMethods.xBegin
2d970 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2d980 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42         module.xB
2d990 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  egin);....      
2d9a0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d9b0 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e  Module.xSync = n
2d9c0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d9d0 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20  ethods.xSync(.. 
2d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d9f0 20 20 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 29     module.xSync)
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 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20  e.xCommit = new 
2da30 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2da40 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20  ods.xCommit(..  
2da50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da60 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74    module.xCommit
2da70 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2da80 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2da90 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e  le.xRollback = n
2daa0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2dab0 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b  ethods.xRollback
2dac0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2dad0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
2dae0 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  ollback);....   
2daf0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2db00 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
2db10 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e  unction = new Un
2db20 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2db30 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  s.xFindFunction(
2db40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2db50 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69        module.xFi
2db60 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  ndFunction);....
2db70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db80 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  nativeModule.xRe
2db90 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  name = new Unsaf
2dba0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2dbb0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
2dbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2dbd0 75 6c 65 2e 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d  ule.xRename);...
2dbe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dbf0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
2dc00 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
2dc10 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2dc20 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
2dc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc40 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65      module.xSave
2dc50 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  point);....     
2dc60 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2dc70 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
2dc80 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2dc90 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65  iveMethods.xRele
2dca0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
2dcb0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2dcc0 2e 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20  .xRelease);.... 
2dcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2dce0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2dcf0 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e  lbackTo = new Un
2dd00 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2dd10 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  s.xRollbackTo(..
2dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd30 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c      module.xRoll
2dd40 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20  backTo);..      
2dd50 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2dd60 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
2dd70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2dd80 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2dd90 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d  Module.xCreate =
2dda0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ddb0 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65  eMethods.xCreate
2ddc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ddd0 20 20 20 20 20 20 20 78 43 72 65 61 74 65 29 3b         xCreate);
2dde0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ddf0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2de00 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20  .xConnect = new 
2de10 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2de20 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ods.xConnect(.. 
2de30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de40 20 20 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d     xConnect);...
2de50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2de60 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42   nativeModule.xB
2de70 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55  estIndex = new U
2de80 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2de90 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  ds.xBestIndex(..
2dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2deb0 20 20 20 20 78 42 65 73 74 49 6e 64 65 78 29 3b      xBestIndex);
2dec0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ded0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2dee0 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e  .xDisconnect = n
2def0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2df00 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65  ethods.xDisconne
2df10 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
2df20 20 20 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e           xDiscon
2df30 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nect);....      
2df40 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2df50 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  Module.xDestroy 
2df60 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2df70 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72  veMethods.xDestr
2df80 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
2df90 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f           xDestro
2dfa0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2dfb0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2dfc0 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20  ule.xOpen = new 
2dfd0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2dfe0 6f 64 73 2e 78 4f 70 65 6e 28 78 4f 70 65 6e 29  ods.xOpen(xOpen)
2dff0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2e000 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2e010 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
2e020 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e030 2e 78 43 6c 6f 73 65 28 78 43 6c 6f 73 65 29 3b  .xClose(xClose);
2e040 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e050 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e060 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55  .xFilter = new U
2e070 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e080 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  ds.xFilter(..   
2e090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0a0 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20   xFilter);....  
2e0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e0c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
2e0d0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2e0e0 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74  iveMethods.xNext
2e0f0 28 78 4e 65 78 74 29 3b 0d 0a 20 20 20 20 20 20  (xNext);..      
2e100 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e110 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65  Module.xEof = ne
2e120 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e130 74 68 6f 64 73 2e 78 45 6f 66 28 78 45 6f 66 29  thods.xEof(xEof)
2e140 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e150 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e160 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20  e.xColumn = new 
2e170 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e180 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ods.xColumn(..  
2e190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1a0 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20    xColumn);.... 
2e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2e1c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77  ativeModule.xRow
2e1d0 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  Id = new UnsafeN
2e1e0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2e1f0 77 49 64 28 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a  wId(xRowId);....
2e200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e210 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  nativeModule.xUp
2e220 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  date = new Unsaf
2e230 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2e240 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
2e250 20 20 20 20 20 20 20 20 20 20 20 20 20 78 55 70               xUp
2e260 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  date);....      
2e270 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e280 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20  Module.xBegin = 
2e290 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2e2a0 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 78  Methods.xBegin(x
2e2b0 42 65 67 69 6e 29 3b 0d 0a 20 20 20 20 20 20 20  Begin);..       
2e2c0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2e2d0 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65  odule.xSync = ne
2e2e0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e2f0 74 68 6f 64 73 2e 78 53 79 6e 63 28 78 53 79 6e  thods.xSync(xSyn
2e300 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c);....         
2e310 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e320 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65  ule.xCommit = ne
2e330 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e340 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a  thods.xCommit(..
2e350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e360 20 20 20 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d      xCommit);...
2e370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e380 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2e390 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e  ollback = new Un
2e3a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e3b0 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  s.xRollback(..  
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3d0 20 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d    xRollback);...
2e3e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e3f0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2e400 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65  indFunction = ne
2e410 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e420 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74  thods.xFindFunct
2e430 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
2e440 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46            xFindF
2e450 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  unction);....   
2e460 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e470 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
2e480 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2e490 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e  tiveMethods.xRen
2e4a0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2e4b0 20 20 20 20 20 20 20 20 20 20 78 52 65 6e 61 6d            xRenam
2e4c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2e4d0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e4e0 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d  ule.xSavepoint =
2e4f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e500 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f  eMethods.xSavepo
2e510 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
2e520 20 20 20 20 20 20 20 20 20 20 78 53 61 76 65 70            xSavep
2e530 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  oint);....      
2e540 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e550 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20  Module.xRelease 
2e560 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e570 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61  veMethods.xRelea
2e580 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
2e590 20 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73           xReleas
2e5a0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2e5b0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e5c0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  ule.xRollbackTo 
2e5d0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e5e0 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62  veMethods.xRollb
2e5f0 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
2e600 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c              xRol
2e610 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20  lbackTo);..     
2e620 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2e630 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
2e640 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20  ativeModule;..  
2e650 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2e660 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e6b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2e6c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2e6d0 20 43 72 65 61 74 65 73 20 61 20 63 6f 70 79 20   Creates a copy 
2e6e0 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
2e6f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2e700 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
2e710 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2e720 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20  ite3_module" /> 
2e730 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2c  object instance,
2e740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
2e750 69 6e 67 20 64 65 66 61 75 6c 74 20 69 6d 70 6c  ing default impl
2e760 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20  ementations for 
2e770 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 20 64 65  the contained de
2e780 6c 65 67 61 74 65 73 20 77 68 65 6e 0d 0a 20 20  legates when..  
2e790 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63 65 73 73        /// necess
2e7a0 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
2e7b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2e7c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2e7d0 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
2e7e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2e7f0 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
2e800 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e810 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20  sqlite3_module" 
2e820 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  /> object..     
2e830 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20     /// instance 
2e840 74 6f 20 63 6f 70 79 2e 0d 0a 20 20 20 20 20 20  to copy...      
2e850 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2e860 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2e870 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
2e880 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20  // The new <see 
2e890 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
2e8a0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2e8b0 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  3_module" /> obj
2e8c0 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
2e8d0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
2e8e0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2e8f0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
2e900 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ate UnsafeNative
2e910 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
2e920 6d 6f 64 75 6c 65 20 43 6f 70 79 4e 61 74 69 76  module CopyNativ
2e930 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  eModule(..      
2e940 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
2e950 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2e960 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 0d  3_module module.
2e970 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2e980 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e990 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
2e9a0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2e9b0 65 33 5f 6d 6f 64 75 6c 65 20 6e 65 77 4d 6f 64  e3_module newMod
2e9c0 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ule =..         
2e9d0 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66         new Unsaf
2e9e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2e9f0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29 3b  qlite3_module();
2ea00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ea10 6e 65 77 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69  newModule.iVersi
2ea20 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69 56 65 72  on = module.iVer
2ea30 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sion;....       
2ea40 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2ea50 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73  Create = new Uns
2ea60 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ea70 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20  .xCreate(..     
2ea80 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2ea90 6c 65 2e 78 43 72 65 61 74 65 20 21 3d 20 6e 75  le.xCreate != nu
2eaa0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 72  ll) ? module.xCr
2eab0 65 61 74 65 20 3a 20 78 43 72 65 61 74 65 29 3b  eate : xCreate);
2eac0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ead0 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  newModule.xConne
2eae0 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
2eaf0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f  ativeMethods.xCo
2eb00 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2eb10 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2eb20 78 43 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c  xConnect != null
2eb30 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  ) ? module.xConn
2eb40 65 63 74 20 3a 20 78 43 6f 6e 6e 65 63 74 29 3b  ect : xConnect);
2eb50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2eb60 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  newModule.xBestI
2eb70 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
2eb80 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2eb90 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2eba0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2ebb0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 21  ule.xBestIndex !
2ebc0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2ebd0 2e 78 42 65 73 74 49 6e 64 65 78 20 3a 20 78 42  .xBestIndex : xB
2ebe0 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  estIndex);....  
2ebf0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2ec00 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2ec10 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ec20 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2ec30 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2ec40 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2ec50 78 44 69 73 63 6f 6e 6e 65 63 74 20 21 3d 20 6e  xDisconnect != n
2ec60 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 44  ull) ? module.xD
2ec70 69 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a 20 20 20  isconnect :..   
2ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
2ec90 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  sconnect);....  
2eca0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2ecb0 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e  ule.xDestroy = n
2ecc0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2ecd0 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28  ethods.xDestroy(
2ece0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ecf0 20 20 28 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72    (module.xDestr
2ed00 6f 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  oy != null) ? mo
2ed10 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3a 20  dule.xDestroy : 
2ed20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20  xDestroy);....  
2ed30 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2ed40 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20  ule.xOpen = new 
2ed50 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2ed60 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20  ods.xOpen(..    
2ed70 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2ed80 75 6c 65 2e 78 4f 70 65 6e 20 21 3d 20 6e 75 6c  ule.xOpen != nul
2ed90 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4f 70 65  l) ? module.xOpe
2eda0 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20  n : xOpen);.... 
2edb0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2edc0 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65  dule.xClose = ne
2edd0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2ede0 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d 0a 20  thods.xClose(.. 
2edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2ee00 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 21 3d  module.xClose !=
2ee10 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2ee20 78 43 6c 6f 73 65 20 3a 20 78 43 6c 6f 73 65 29  xClose : xClose)
2ee30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ee40 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6c 74   newModule.xFilt
2ee50 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  er = new UnsafeN
2ee60 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
2ee70 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
2ee80 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2ee90 46 69 6c 74 65 72 20 21 3d 20 6e 75 6c 6c 29 20  Filter != null) 
2eea0 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  ? module.xFilter
2eeb0 20 3a 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a   : xFilter);....
2eec0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2eed0 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65  odule.xNext = ne
2eee0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2eef0 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20  thods.xNext(..  
2ef00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2ef10 6f 64 75 6c 65 2e 78 4e 65 78 74 20 21 3d 20 6e  odule.xNext != n
2ef20 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4e  ull) ? module.xN
2ef30 65 78 74 20 3a 20 78 4e 65 78 74 29 3b 0d 0a 0d  ext : xNext);...
2ef40 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2ef50 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65  Module.xEof = ne
2ef60 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2ef70 74 68 6f 64 73 2e 78 45 6f 66 28 0d 0a 20 20 20  thods.xEof(..   
2ef80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2ef90 64 75 6c 65 2e 78 45 6f 66 20 21 3d 20 6e 75 6c  dule.xEof != nul
2efa0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 45 6f 66  l) ? module.xEof
2efb0 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20   : xEof);....   
2efc0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
2efd0 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77  le.xColumn = new
2efe0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2eff0 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20  hods.xColumn(.. 
2f000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2f010 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 21  module.xColumn !
2f020 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2f030 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78 43 6f 6c 75  .xColumn : xColu
2f040 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mn);....        
2f050 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52      newModule.xR
2f060 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66  owId = new Unsaf
2f070 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f080 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
2f090 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2f0a0 78 52 6f 77 49 64 20 21 3d 20 6e 75 6c 6c 29 20  xRowId != null) 
2f0b0 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20  ? module.xRowId 
2f0c0 3a 20 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  : xRowId);....  
2f0d0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2f0e0 75 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65  ule.xUpdate = ne
2f0f0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f100 74 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a  thods.xUpdate(..
2f110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f120 28 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  (module.xUpdate 
2f130 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2f140 65 2e 78 55 70 64 61 74 65 20 3a 20 78 55 70 64  e.xUpdate : xUpd
2f150 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
2f160 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f170 42 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61  Begin = new Unsa
2f180 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f190 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20  xBegin(..       
2f1a0 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2f1b0 2e 78 42 65 67 69 6e 20 21 3d 20 6e 75 6c 6c 29  .xBegin != null)
2f1c0 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e   ? module.xBegin
2f1d0 20 3a 20 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20   : xBegin);.... 
2f1e0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f1f0 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77  dule.xSync = new
2f200 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f210 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20  hods.xSync(..   
2f220 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2f230 64 75 6c 65 2e 78 53 79 6e 63 20 21 3d 20 6e 75  dule.xSync != nu
2f240 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 79  ll) ? module.xSy
2f250 6e 63 20 3a 20 78 53 79 6e 63 29 3b 0d 0a 0d 0a  nc : xSync);....
2f260 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f270 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20  odule.xCommit = 
2f280 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f290 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28  Methods.xCommit(
2f2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f2b0 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69    (module.xCommi
2f2c0 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  t != null) ? mod
2f2d0 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3a 20 78 43  ule.xCommit : xC
2f2e0 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ommit);....     
2f2f0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2f300 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77  .xRollback = new
2f310 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f320 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d  hods.xRollback(.
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 52 6f 6c 6c 62 61   (module.xRollba
2f350 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  ck != null) ? mo
2f360 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3a  dule.xRollback :
2f370 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a   xRollback);....
2f380 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f390 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2f3a0 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ion = new Unsafe
2f3b0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46  NativeMethods.xF
2f3c0 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
2f3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2f3e0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2f3f0 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ion != null) ? m
2f400 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2f410 69 6f 6e 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ion :..         
2f420 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63         xFindFunc
2f430 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  tion);....      
2f440 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f450 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e  xRename = new Un
2f460 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f470 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  s.xRename(..    
2f480 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2f490 75 6c 65 2e 78 52 65 6e 61 6d 65 20 21 3d 20 6e  ule.xRename != n
2f4a0 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52  ull) ? module.xR
2f4b0 65 6e 61 6d 65 20 3a 20 78 52 65 6e 61 6d 65 29  ename : xRename)
2f4c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f4d0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53 61 76 65   newModule.xSave
2f4e0 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61  point = new Unsa
2f4f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f500 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
2f510 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2f520 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
2f530 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2f540 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3a 20 78  e.xSavepoint : x
2f550 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20  Savepoint);.... 
2f560 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f570 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20  dule.xRelease = 
2f580 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f590 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65  Methods.xRelease
2f5a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f5b0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 65 6c 65     (module.xRele
2f5c0 61 73 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ase != null) ? m
2f5d0 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3a  odule.xRelease :
2f5e0 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20   xRelease);.... 
2f5f0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f600 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
2f610 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2f620 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c  iveMethods.xRoll
2f630 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20  backTo(..       
2f640 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2f650 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 21 3d 20  .xRollbackTo != 
2f660 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f670 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a 0d 0a 20 20  RollbackTo :..  
2f680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52                xR
2f690 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 0d 0a 20  ollbackTo);.... 
2f6a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2f6b0 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b 0d 0a 20 20  n newModule;..  
2f6c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2f6d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2f6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2f720 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2f730 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2f740 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68   Calls one of th
2f750 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
2f760 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6d  initialization m
2f770 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20  ethods...       
2f780 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2f790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2f7a0 72 61 6d 20 6e 61 6d 65 3d 22 63 72 65 61 74 65  ram name="create
2f7b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2f7c0 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c  Non-zero to call
2f7d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2f7e0 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
2f7f0 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 0d  dule.Create" />.
2f800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
2f810 68 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  hod; otherwise, 
2f820 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2f830 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
2f840 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 0d  ule.Connect" />.
2f850 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
2f860 68 6f 64 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  hod will be call
2f870 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
2f880 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2f890 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2f8a0 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20  me="pDb">..     
2f8b0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2f8c0 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
2f8d0 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20  ction handle... 
2f8e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2f8f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2f900 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41   <param name="pA
2f910 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ux">..        //
2f920 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e  / The original n
2f930 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 76 61  ative pointer va
2f940 6c 75 65 20 74 68 61 74 20 77 61 73 20 70 72 6f  lue that was pro
2f950 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
2f960 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
2f970 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28  3_create_module(
2f980 29 2c 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  ), sqlite3_creat
2f990 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20 6f 72  e_module_v2() or
2f9a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
2f9b0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
2f9c0 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 29  posable_module()
2f9d0 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20   functions...   
2f9e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2f9f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2fa00 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63  param name="argc
2fa10 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2fa20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72  The number of ar
2fa30 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65  guments from the
2fa40 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
2fa50 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
2fa60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2fa70 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2fa80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2fa90 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
2faa0 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
2fab0 66 20 73 74 72 69 6e 67 20 61 72 67 75 6d 65 6e  f string argumen
2fac0 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41  ts from the CREA
2fad0 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
2fae0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
2faf0 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  atement...      
2fb00 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2fb10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2fb20 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2fb30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
2fb40 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73  on success, this
2fb50 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
2fb60 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70  be modified to p
2fb70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77 6c  oint to the newl
2fb80 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  y..        /// c
2fb90 72 65 61 74 65 64 20 6e 61 74 69 76 65 20 73 71  reated native sq
2fba0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
2fbb0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
2fbc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2fbd0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2fbe0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45   <param name="pE
2fbf0 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rror">..        
2fc00 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65  /// Upon failure
2fc10 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
2fc20 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
2fc30 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68  d to point to th
2fc40 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  e error..       
2fc50 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20 77 69   /// message, wi
2fc60 74 68 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  th the underlyin
2fc70 67 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e 67 20  g memory having 
2fc80 62 65 65 6e 20 6f 62 74 61 69 6e 65 64 20 66 72  been obtained fr
2fc90 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
2fca0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  /// sqlite3_mall
2fcb0 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a  oc() function...
2fcc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2fcd0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2fce0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2fcf0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
2fd00 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
2fd10 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
2fd20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2fd30 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2fd40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2fd50 20 43 72 65 61 74 65 4f 72 43 6f 6e 6e 65 63 74   CreateOrConnect
2fd60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  (..            b
2fd70 6f 6f 6c 20 63 72 65 61 74 65 2c 0d 0a 20 20 20  ool create,..   
2fd80 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2fd90 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  pDb,..          
2fda0 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
2fdb0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
2fdc0 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  argc,..         
2fdd0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
2fde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
2fdf0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
2fe00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2fe10 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
2fe20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2fe30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fe40 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2fe50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fe60 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
2fe70 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51 4c 69 74  fileName = SQLit
2fe80 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72  eString.StringFr
2fe90 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a 20  omUtf8IntPtr(.. 
2fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2feb0 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
2fec0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 64  ethods.sqlite3_d
2fed0 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44 62 2c 20  b_filename(pDb, 
2fee0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 3b 0d 0a  IntPtr.Zero));..
2fef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ff00 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43    using (SQLiteC
2ff10 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63  onnection connec
2ff20 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c 69 74  tion = new SQLit
2ff30 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d 0a 20 20  eConnection(..  
2ff40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff50 20 20 20 20 20 20 70 44 62 2c 20 66 69 6c 65 4e        pDb, fileN
2ff60 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20  ame, false))..  
2ff70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2ff80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ff90 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
2ffa0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d 20  alTable table = 
2ffb0 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
2ffc0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
2ffd0 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d  g error = null;.
2ffe0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2fff0 20 20 20 20 20 20 20 69 66 20 28 28 63 72 65 61         if ((crea
30000 74 65 20 26 26 20 43 72 65 61 74 65 28 63 6f 6e  te && Create(con
30010 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78 2c 0d 0a  nection, pAux,..
30020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30030 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
30040 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 41  teString.StringA
30050 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65  rrayFromUtf8Size
30060 41 6e 64 49 6e 74 50 74 72 28 61 72 67 63 2c 0d  AndIntPtr(argc,.
30070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30080 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
30090 76 29 2c 20 72 65 66 20 74 61 62 6c 65 2c 20 72  v), ref table, r
300a0 65 66 20 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c  ef error) == SQL
300b0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
300c0 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
300d0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 21 63               (!c
300e0 72 65 61 74 65 20 26 26 20 43 6f 6e 6e 65 63 74  reate && Connect
300f0 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75  (connection, pAu
30100 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
30110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30120 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
30130 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38  ingArrayFromUtf8
30140 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72  SizeAndIntPtr(ar
30150 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
30160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30170 20 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c   argv), ref tabl
30180 65 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d  e, ref error) ==
30190 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
301a0 2e 4f 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20  .Ok))..         
301b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
301c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301d0 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20        if (table 
301e0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
301f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30200 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30220 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 54 6f   pVtab = TableTo
30230 49 6e 74 50 74 72 28 74 61 62 6c 65 29 3b 0d 0a  IntPtr(table);..
30240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30250 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30260 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
30270 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20  de.Ok;..        
30280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30290 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
302a0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
302b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
302c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
302d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302e0 20 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d          pError =
302f0 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74   SQLiteString.Ut
30300 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
30310 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng(..           
30320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30330 20 20 20 20 20 22 6e 6f 20 74 61 62 6c 65 20 77       "no table w
30340 61 73 20 63 72 65 61 74 65 64 22 29 3b 0d 0a 20  as created");.. 
30350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30360 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
30380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30390 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
303a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
303b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
303c0 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
303d0 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
303e0 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
303f0 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20 20  ring(error);..  
30400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30410 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30420 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30430 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30440 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
30450 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20  ion e) /* NOTE: 
30460 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20  Must catch ALL. 
30470 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
30480 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
30490 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
304a0 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
304b0 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65 2e  PtrFromString(e.
304c0 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
304d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
304e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
304f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
30500 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
30510 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
30520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30560 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30570 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
30580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c  .        /// Cal
30590 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 69  ls one of the vi
305a0 72 74 75 61 6c 20 74 61 62 6c 65 20 66 69 6e 61  rtual table fina
305b0 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64 73  lization methods
305c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
305d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
305e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
305f0 6d 65 3d 22 64 65 73 74 72 6f 79 22 3e 0d 0a 20  me="destroy">.. 
30600 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
30610 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65 20  ero to call the 
30620 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
30630 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
30640 44 65 73 74 72 6f 79 22 20 2f 3e 0d 0a 20 20 20  Destroy" />..   
30650 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b       /// method;
30660 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 0d   otherwise, the.
30670 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
30680 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
30690 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 44 69 73  anagedModule.Dis
306a0 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
306b0 6f 64 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  od will be..    
306c0 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 2e 0d      /// called..
306d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
306e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
306f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
30700 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
30710 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
30720 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
30730 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
30740 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
30750 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
30760 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
30770 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
30780 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
30790 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
307a0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
307b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
307c0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
307d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
307e0 20 44 65 73 74 72 6f 79 4f 72 44 69 73 63 6f 6e   DestroyOrDiscon
307f0 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
30800 20 20 20 62 6f 6f 6c 20 64 65 73 74 72 6f 79 2c     bool destroy,
30810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
30820 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
30830 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
30840 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30850 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
30860 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30870 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
30880 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d  ualTable table =
30890 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72   TableFromIntPtr
308a0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
308b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
308c0 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  table != null)..
308d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
308f0 20 20 20 20 20 20 20 69 66 20 28 28 64 65 73 74         if ((dest
30900 72 6f 79 20 26 26 20 28 44 65 73 74 72 6f 79 28  roy && (Destroy(
30910 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65  table) == SQLite
30920 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 20 7c  ErrorCode.Ok)) |
30930 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
30940 20 20 20 20 20 20 20 20 20 20 20 28 21 64 65 73             (!des
30950 74 72 6f 79 20 26 26 20 28 44 69 73 63 6f 6e 6e  troy && (Disconn
30960 65 63 74 28 74 61 62 6c 65 29 20 3d 3d 20 53 51  ect(table) == SQ
30970 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
30980 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )))..           
30990 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
309a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309b0 20 20 20 20 69 66 20 28 74 61 62 6c 65 73 20 21      if (tables !
309c0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
309d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309e0 20 20 20 20 20 74 61 62 6c 65 73 2e 52 65 6d 6f       tables.Remo
309f0 76 65 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  ve(pVtab);....  
30a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a10 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
30a20 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b  iteErrorCode.Ok;
30a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30a40 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30a50 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30a60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30a70 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
30a80 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f  ception e) /* NO
30a90 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41  TE: Must catch A
30aa0 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  LL. */..        
30ab0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30ac0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
30ad0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
30ae0 54 45 3a 20 41 74 20 74 68 69 73 20 70 6f 69 6e  TE: At this poin
30af0 74 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 77  t, there is no w
30b00 61 79 20 74 6f 20 72 65 70 6f 72 74 20 74 68 65  ay to report the
30b10 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
30b20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
30b30 20 63 6f 6e 64 69 74 69 6f 6e 20 62 61 63 6b 20   condition back 
30b40 74 6f 20 74 68 65 20 63 61 6c 6c 65 72 3b 20 74  to the caller; t
30b50 68 65 72 65 66 6f 72 65 2c 20 75 73 65 20 74 68  herefore, use th
30b60 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
30b70 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 6f 67 67     //       logg
30b80 69 6e 67 20 66 61 63 69 6c 69 74 79 20 69 6e 73  ing facility ins
30b90 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  tead...         
30ba0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
30bb0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bd0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
30be0 20 20 20 20 20 20 20 69 66 20 28 4c 6f 67 45 78         if (LogEx
30bf0 63 65 70 74 69 6f 6e 73 4e 6f 54 68 72 6f 77 29  ceptionsNoThrow)
30c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30c10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c30 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
30c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c50 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e        SQLiteLog.
30c60 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74  LogMessage(SQLit
30c70 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45  eBase.COR_E_EXCE
30c80 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20  PTION,..        
30c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ca0 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
30cb0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
30cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
30ce0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
30cf0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
30d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d10 20 20 20 20 20 20 22 43 61 75 67 68 74 20 65 78        "Caught ex
30d20 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30 7d  ception in \"{0}
30d30 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22 2c  \" method: {1}",
30d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
30d60 73 74 72 6f 79 20 3f 20 22 78 44 65 73 74 72 6f  stroy ? "xDestro
30d70 79 22 20 3a 20 22 78 44 69 73 63 6f 6e 6e 65 63  y" : "xDisconnec
30d80 74 22 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20  t", e));..      
30d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
30da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30db0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30dc0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
30dd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30df0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
30e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30e10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30e20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30e30 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
30e40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30e50 20 20 20 20 20 20 20 20 46 72 65 65 54 61 62 6c          FreeTabl
30e60 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  e(pVtab);..     
30e70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
30e80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
30e90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
30ea0 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rror;..        }
30eb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
30ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
30f10 72 65 67 69 6f 6e 20 53 74 61 74 69 63 20 45 72  region Static Er
30f20 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20 48 65 6c  ror Handling Hel
30f30 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
30f40 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
30f50 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
30f60 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65  Arranges for the
30f70 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
30f80 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70   message to be p
30f90 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a  laced into the..
30fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72          /// zErr
30fb0 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73  Msg field of a s
30fc0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
30fd0 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66  ved structure, f
30fe0 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  reeing the..    
30ff0 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67      /// existing
31000 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20   error message, 
31010 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
31020 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
31030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
31040 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
31050 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
31060 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
31070 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
31080 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
31090 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  to be used...   
310a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
310b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
310c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
310d0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
310e0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
310f0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
31100 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
31110 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
31120 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
31130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
31140 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72  aram name="logEr
31150 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  rors">..        
31160 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
31170 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61  this error messa
31180 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62  ge should also b
31190 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74  e logged using t
311a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
311b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
311c0 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d  eLog" /> class..
311d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
311e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
311f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
31200 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d  logExceptions">.
31210 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
31220 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74 20  -zero if caught 
31230 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c  exceptions shoul
31240 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  d be logged usin
31250 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
31260 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
31270 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
31280 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
31290 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
312a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
312b0 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
312c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f      /// The erro
312d0 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  r message...    
312e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
312f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
31300 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
31310 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
31320 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
31330 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
31340 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
31350 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
31360 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d   SetTableError(.
31370 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
31380 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
31390 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
313a0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
313b0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c            bool l
313c0 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20  ogErrors,..     
313d0 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
313e0 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20  xceptions,..    
313f0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65          string e
31400 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
31410 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
31420 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
31430 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31450 69 66 20 28 6c 6f 67 45 72 72 6f 72 73 29 0d 0a  if (logErrors)..
31460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31470 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31480 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67         SQLiteLog
31490 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69  .LogMessage(SQLi
314a0 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
314b0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
314c0 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70              Help
314d0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
314e0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
314f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31500 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
31510 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
31520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31530 20 20 20 20 20 20 22 56 69 72 74 75 61 6c 20 74        "Virtual t
31540 61 62 6c 65 20 65 72 72 6f 72 3a 20 7b 30 7d 22  able error: {0}"
31550 2c 20 65 72 72 6f 72 29 29 3b 20 2f 2a 20 74 68  , error)); /* th
31560 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
31570 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
31580 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31590 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
315a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
315b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
315c0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
315d0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
315e0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75           bool su
315f0 63 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a  ccess = false;..
31600 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
31610 74 72 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49  tr pNewError = I
31620 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
31630 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
31640 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
31660 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50  f (pVtab == IntP
31670 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
31680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
31690 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
316a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
316b0 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a  nt offset = 0;..
316c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
316d0 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
316e0 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
316f0 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
31700 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
31710 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
31720 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
31730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31740 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
31750 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
31760 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
31770 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
31780 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
31790 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
317a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
317b0 20 20 49 6e 74 50 74 72 20 70 4f 6c 64 45 72 72    IntPtr pOldErr
317c0 6f 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  or = SQLiteMarsh
317d0 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 56  al.ReadIntPtr(pV
317e0 74 61 62 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  tab, offset);...
317f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31800 20 69 66 20 28 70 4f 6c 64 45 72 72 6f 72 20 21   if (pOldError !
31810 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
31820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31830 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31840 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
31850 6f 72 79 2e 46 72 65 65 28 70 4f 6c 64 45 72 72  ory.Free(pOldErr
31860 6f 72 29 3b 20 70 4f 6c 64 45 72 72 6f 72 20 3d  or); pOldError =
31870 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
31880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31890 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
318a0 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 56 74  .WriteIntPtr(pVt
318b0 61 62 2c 20 6f 66 66 73 65 74 2c 20 70 4f 6c 64  ab, offset, pOld
318c0 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  Error);..       
318d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
318e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
318f0 20 28 65 72 72 6f 72 20 3d 3d 20 6e 75 6c 6c 29   (error == null)
31900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31910 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
31920 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
31930 20 20 20 20 20 20 70 4e 65 77 45 72 72 6f 72 20        pNewError 
31940 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55  = SQLiteString.U
31950 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
31960 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ing(error);..   
31970 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
31980 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
31990 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66  IntPtr(pVtab, of
319a0 66 73 65 74 2c 20 70 4e 65 77 45 72 72 6f 72 29  fset, pNewError)
319b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
319c0 20 20 20 73 75 63 63 65 73 73 20 3d 20 74 72 75     success = tru
319d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
319e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
319f0 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
31a00 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74  e) /* NOTE: Must
31a10 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a   catch ALL. */..
31a20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31a40 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31a50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31a60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
31a70 6f 67 45 78 63 65 70 74 69 6f 6e 73 29 0d 0a 20  ogExceptions).. 
31a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
31ab0 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61  LiteLog.LogMessa
31ac0 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e 43 4f  ge(SQLiteBase.CO
31ad0 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a  R_E_EXCEPTION,..
31ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31af0 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70              Help
31b00 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
31b10 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
31b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b30 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
31b40 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
31b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
31b70 61 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e 20  aught exception 
31b80 69 6e 20 5c 22 53 65 74 54 61 62 6c 65 45 72 72  in \"SetTableErr
31b90 6f 72 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 30 7d  or\" method: {0}
31ba0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
31bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31bc0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
31bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31be0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31bf0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31c00 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
31c10 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
31c20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31c30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
31c40 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
31c50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31c60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31c70 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
31c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ca0 69 66 20 28 21 73 75 63 63 65 73 73 20 26 26 20  if (!success && 
31cb0 28 70 4e 65 77 45 72 72 6f 72 20 21 3d 20 49 6e  (pNewError != In
31cc0 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
31cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31cf0 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
31d00 2e 46 72 65 65 28 70 4e 65 77 45 72 72 6f 72 29  .Free(pNewError)
31d10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
31d20 20 20 20 20 20 20 20 70 4e 65 77 45 72 72 6f 72         pNewError
31d30 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
31d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31d50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31d60 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31d70 20 72 65 74 75 72 6e 20 73 75 63 63 65 73 73 3b   return success;
31d80 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
31d90 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
31da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
31de0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
31df0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
31e00 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f   /// Arranges fo
31e10 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
31e20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f  error message to
31e30 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20   be placed into 
31e40 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
31e50 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f   zErrMsg field o
31e60 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  f a sqlite3_vtab
31e70 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
31e80 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d  re, freeing the.
31e90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69  .        /// exi
31ea0 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73  sting error mess
31eb0 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20  age, if any...  
31ec0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
31ed0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
31ee0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
31ef0 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  odule">..       
31f00 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
31f10 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
31f20 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
31f30 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e  ance to be used.
31f40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
31f50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
31f60 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
31f70 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
31f80 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
31f90 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
31fa0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
31fb0 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
31fc0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
31fd0 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74 69   lookup the nati
31fe0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
31ff0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
32000 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
32010 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
32020 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
32030 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
32040 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20  ="logErrors">.. 
32050 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
32060 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72 6f  ero if this erro
32070 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c 64  r message should
32080 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64 20   also be logged 
32090 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
320a0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
320b0 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
320c0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
320d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
320e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
320f0 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74   name="logExcept
32100 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  ions">..        
32110 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
32120 63 61 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e  caught exception
32130 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  s should be logg
32140 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
32150 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
32160 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
32170 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
32180 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
32190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
321a0 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
321b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
321c0 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
321d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
321e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
321f0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
32200 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
32210 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  zero upon succes
32220 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
32230 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
32240 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
32250 69 63 20 62 6f 6f 6c 20 53 65 74 54 61 62 6c 65  ic bool SetTable
32260 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
32270 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65      SQLiteModule
32280 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20   module,..      
32290 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
322a0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d  ualTable table,.
322b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
322c0 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20  l logErrors,..  
322d0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c            bool l
322e0 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20  ogExceptions,.. 
322f0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
32300 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  g error..       
32310 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
32320 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
32330 66 20 28 74 61 62 6c 65 20 3d 3d 20 6e 75 6c 6c  f (table == null
32340 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32350 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
32360 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32370 49 6e 74 50 74 72 20 70 56 74 61 62 20 3d 20 74  IntPtr pVtab = t
32380 61 62 6c 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c  able.NativeHandl
32390 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
323a0 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49    if (pVtab == I
323b0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
323c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
323d0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
323e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
323f0 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d   SetTableError(.
32400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32410 20 6d 6f 64 75 6c 65 2c 20 70 56 74 61 62 2c 20   module, pVtab, 
32420 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45 78  logErrors, logEx
32430 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72 29  ceptions, error)
32440 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
32450 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
324a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
324b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
324c0 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66    /// Arranges f
324d0 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
324e0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74   error message t
324f0 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f  o be placed into
32500 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
32510 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20  / zErrMsg field 
32520 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61  of a sqlite3_vta
32530 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
32540 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65  ure, freeing the
32550 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78  ..        /// ex
32560 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73  isting error mes
32570 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  sage, if any... 
32580 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
32590 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
325a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
325b0 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20  module">..      
325c0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
325d0 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
325e0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
325f0 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64  tance to be used
32600 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
32610 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
32620 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
32630 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
32640 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
32650 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
32660 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
32670 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
32680 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20  tructure..      
32690 20 20 2f 2f 2f 20 75 73 65 64 20 74 6f 20 67 65    /// used to ge
326a0 74 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69  t the native poi
326b0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
326c0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
326d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
326e0 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
326f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
32700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
32710 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f  am name="logErro
32720 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rs">..        //
32730 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
32740 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  is error message
32750 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20   should also be 
32760 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65  logged using the
32770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
32780 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
32790 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  og" /> class... 
327a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
327b0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
327c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f   <param name="lo
327d0 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20  gExceptions">.. 
327e0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
327f0 65 72 6f 20 69 66 20 63 61 75 67 68 74 20 65 78  ero if caught ex
32800 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ceptions should 
32810 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
32820 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32830 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
32840 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
32850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
32860 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
32870 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
32880 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  "error">..      
32890 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72 20    /// The error 
328a0 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  message...      
328b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
328c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
328d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
328e0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
328f0 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
32900 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
32910 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
32920 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53  te static bool S
32930 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a  etCursorError(..
32940 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
32950 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  teModule module,
32960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
32970 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
32980 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
32990 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20  logErrors,..    
329a0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67          bool log
329b0 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20  Exceptions,..   
329c0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
329d0 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
329e0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
329f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
32a00 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
32a10 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
32a20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
32a30 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
32a40 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
32a50 74 61 62 20 3d 20 54 61 62 6c 65 46 72 6f 6d 43  tab = TableFromC
32a60 75 72 73 6f 72 28 6d 6f 64 75 6c 65 2c 20 70 43  ursor(module, pC
32a70 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ursor);....     
32a80 20 20 20 20 20 20 20 69 66 20 28 70 56 74 61 62         if (pVtab
32a90 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
32aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32ab0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
32ac0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
32ad0 65 74 75 72 6e 20 53 65 74 54 61 62 6c 65 45 72  eturn SetTableEr
32ae0 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ror(..          
32af0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70 56        module, pV
32b00 74 61 62 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20  tab, logErrors, 
32b10 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 65  logExceptions, e
32b20 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
32b30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
32b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32b90 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
32ba0 20 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e         /// Arran
32bb0 67 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63  ges for the spec
32bc0 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73  ified error mess
32bd0 61 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64  age to be placed
32be0 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20   into the..     
32bf0 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66     /// zErrMsg f
32c00 69 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65  ield of a sqlite
32c10 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
32c20 74 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e  tructure, freein
32c30 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
32c40 2f 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f  // existing erro
32c50 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e  r message, if an
32c60 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
32c70 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
32c80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32c90 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
32ca0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
32cb0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
32cc0 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
32cd0 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
32ce0 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
32cf0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32d00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32d10 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
32d20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
32d30 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
32d40 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
32d50 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
32d60 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
32d70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
32d80 6f 6b 75 70 20 74 68 65 20 6e 61 74 69 76 65 20  okup the native 
32d90 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
32da0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32db0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
32dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
32dd0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32de0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
32df0 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20  ogErrors">..    
32e00 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
32e10 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d   if this error m
32e20 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c  essage should al
32e30 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  so be logged usi
32e40 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
32e50 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
32e60 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
32e70 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32e80 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32e90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32ea0 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e  me="logException
32eb0 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
32ec0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75   Non-zero if cau
32ed0 67 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73  ght exceptions s
32ee0 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20  hould be logged 
32ef0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
32f00 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
32f10 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
32f20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
32f30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32f40 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32f50 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
32f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32f70 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
32f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
32f90 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32fa0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
32fb0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
32fc0 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
32fd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
32fe0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
32ff0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
33000 62 6f 6f 6c 20 53 65 74 43 75 72 73 6f 72 45 72  bool SetCursorEr
33010 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ror(..          
33020 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d    SQLiteModule m
33030 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  odule,..        
33040 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
33050 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
33060 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
33070 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73    bool logErrors
33080 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
33090 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e  ool logException
330a0 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
330b0 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
330c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
330d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
330e0 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 3d      if (cursor =
330f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
33100 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
33110 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
33120 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
33130 72 73 6f 72 20 3d 20 63 75 72 73 6f 72 2e 4e 61  rsor = cursor.Na
33140 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  tiveHandle;.... 
33150 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
33160 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72  Cursor == IntPtr
33170 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
33180 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
33190 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
331a0 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 43       return SetC
331b0 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20  ursorError(..   
331c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
331d0 75 6c 65 2c 20 70 43 75 72 73 6f 72 2c 20 6c 6f  ule, pCursor, lo
331e0 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65  gErrors, logExce
331f0 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d  ptions, error);.
33200 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
33210 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
33220 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
33230 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
33240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33280 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
33290 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74   #region Protect
332a0 65 64 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  ed Members..    
332b0 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 6f 64 75      #region Modu
332c0 6c 65 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  le Helper Method
332d0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
332e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
332f0 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
33300 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
33310 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
33320 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
33330 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20  terface..       
33340 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
33350 69 6f 6e 20 74 6f 20 62 65 20 75 73 65 64 20 77  ion to be used w
33360 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65  hen creating the
33370 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
33380 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
33390 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 20 20  /// structure.  
333a0 44 65 72 69 76 65 64 20 63 6c 61 73 73 65 73 20  Derived classes 
333b0 6d 61 79 20 6f 76 65 72 72 69 64 65 20 74 68 69  may override thi
333c0 73 20 6d 65 74 68 6f 64 20 74 6f 20 73 75 70 70  s method to supp
333d0 6c 79 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ly an..        /
333e0 2f 2f 20 61 6c 74 65 72 6e 61 74 65 20 69 6d 70  // alternate imp
333f0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  lementation for 
33400 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
33410 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
33420 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
33430 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a  /// interface...
33440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
33450 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33460 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
33470 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
33480 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
33490 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
334a0 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c  > interface impl
334b0 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20  ementation to.. 
334c0 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73         /// be us
334d0 65 64 20 77 68 65 6e 20 70 6f 70 75 6c 61 74 69  ed when populati
334e0 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  ng the native sq
334f0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72  lite3_module str
33500 75 63 74 75 72 65 2e 20 20 49 66 0d 0a 20 20 20  ucture.  If..   
33510 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 65 74       /// the ret
33520 75 72 6e 65 64 20 76 61 6c 75 65 20 69 73 20 6e  urned value is n
33530 75 6c 6c 2c 20 74 68 65 20 70 72 69 76 61 74 65  ull, the private
33540 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65   methods provide
33550 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
33560 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
33570 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
33580 3e 20 63 6c 61 73 73 20 61 6e 64 20 72 65 6c 61  > class and rela
33590 74 69 6e 67 20 74 6f 20 74 68 65 0d 0a 20 20 20  ting to the..   
335a0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
335b0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
335c0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65  eModule" /> inte
335d0 72 66 61 63 65 20 20 77 69 6c 6c 20 62 65 20 75  rface  will be u
335e0 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  sed to..        
335f0 2f 2f 2f 20 63 72 65 61 74 65 20 74 68 65 20 6e  /// create the n
33600 65 63 65 73 73 61 72 79 20 64 65 6c 65 67 61 74  ecessary delegat
33610 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
33620 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
33630 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
33640 69 72 74 75 61 6c 20 49 53 51 4c 69 74 65 4e 61  irtual ISQLiteNa
33650 74 69 76 65 4d 6f 64 75 6c 65 20 47 65 74 4e 61  tiveModule GetNa
33660 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29  tiveModuleImpl()
33670 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
33680 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
33690 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55  null; /* NOTE: U
336a0 73 65 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20  se the built-in 
336b0 64 65 66 61 75 6c 74 20 64 65 6c 65 67 61 74 65  default delegate
336c0 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7d  s. */..        }
336d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
336e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33720 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
33730 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
33740 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
33750 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
33760 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
33770 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
33780 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
33790 2f 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c  / interface impl
337a0 65 6d 65 6e 74 61 74 69 6f 6e 20 63 6f 72 72 65  ementation corre
337b0 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20  sponding to the 
337c0 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 20  current..       
337d0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
337e0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
337f0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
33800 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33810 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
33820 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
33830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
33840 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
33850 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
33860 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69  " /> interface i
33870 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0d 0a 20  mplementation.. 
33880 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 65         /// corre
33890 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20  sponding to the 
338a0 63 75 72 72 65 6e 74 20 3c 73 65 65 20 63 72 65  current <see cre
338b0 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
338c0 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20   /> object..    
338d0 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
338e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
338f0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
33900 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
33910 74 75 61 6c 20 49 53 51 4c 69 74 65 4e 61 74 69  tual ISQLiteNati
33920 76 65 4d 6f 64 75 6c 65 20 43 72 65 61 74 65 4e  veModule CreateN
33930 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28  ativeModuleImpl(
33940 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
33950 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
33960 20 6e 65 77 20 53 51 4c 69 74 65 4e 61 74 69 76   new SQLiteNativ
33970 65 4d 6f 64 75 6c 65 28 74 68 69 73 29 3b 0d 0a  eModule(this);..
33980 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
33990 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
339a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
339b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
33a00 69 6f 6e 20 4e 61 74 69 76 65 20 54 61 62 6c 65  ion Native Table
33a10 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
33a20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
33a30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33a40 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 20  /// Allocates a 
33a50 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
33a60 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
33a70 63 74 75 72 65 20 61 6e 64 20 72 65 74 75 72 6e  cture and return
33a80 73 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s a..        ///
33a90 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
33aa0 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  to it...        
33ab0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
33ac0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
33ad0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
33ae0 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e  // A native poin
33af0 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20  ter to a native 
33b00 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
33b10 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
33b20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
33b30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
33b40 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
33b50 61 6c 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61  al IntPtr Alloca
33b60 74 65 54 61 62 6c 65 28 29 0d 0a 20 20 20 20 20  teTable()..     
33b70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
33b80 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72    int size = Mar
33b90 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
33ba0 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
33bb0 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
33bc0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
33bd0 5f 76 74 61 62 29 29 3b 0d 0a 0d 0a 20 20 20 20  _vtab));....    
33be0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
33bf0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
33c00 63 61 74 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20  cate(size);..   
33c10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33c20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
33c70 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
33c80 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
33c90 5a 65 72 6f 73 20 6f 75 74 20 74 68 65 20 66 69  Zeros out the fi
33ca0 65 6c 64 73 20 6f 66 20 61 20 6e 61 74 69 76 65  elds of a native
33cb0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
33cc0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
33cd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33ce0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33cf0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
33d00 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
33d10 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
33d20 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
33d30 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
33d40 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
33d50 72 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20  ructure to..    
33d60 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20      /// zero... 
33d70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33d80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  am>..        pro
33d90 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
33da0 6f 69 64 20 5a 65 72 6f 54 61 62 6c 65 28 0d 0a  oid ZeroTable(..
33db0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
33dc0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
33dd0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
33de0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33df0 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74  if (pVtab == Int
33e00 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
33e10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
33e20 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
33e30 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30    int offset = 0
33e40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
33e50 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
33e60 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61 62  riteIntPtr(pVtab
33e70 2c 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72  , offset, IntPtr
33e80 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
33e90 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
33ea0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
33eb0 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
33ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
33ed0 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
33ee0 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d  , sizeof(int));.
33ef0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
33f00 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
33f10 74 65 49 6e 74 33 32 28 70 56 74 61 62 2c 20 6f  teInt32(pVtab, o
33f20 66 66 73 65 74 2c 20 30 29 3b 0d 0a 0d 0a 20 20  ffset, 0);....  
33f30 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
33f40 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
33f50 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
33f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33f70 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
33f80 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
33f90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33fa0 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
33fb0 57 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61  WriteIntPtr(pVta
33fc0 62 2c 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74  b, offset, IntPt
33fd0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
33fe0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
33ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34030 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34040 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
34050 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65  .        /// Fre
34060 65 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  es a native sqli
34070 74 65 33 5f 76 74 61 62 20 73 74 72 75 63 74 75  te3_vtab structu
34080 72 65 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f  re using the pro
34090 76 69 64 65 64 20 6e 61 74 69 76 65 0d 0a 20 20  vided native..  
340a0 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65        /// pointe
340b0 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20  r to it...      
340c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
340d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
340e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
340f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
34100 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  A native pointer
34110 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
34120 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
34130 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
34140 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34150 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  m>..        prot
34160 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f  ected virtual vo
34170 69 64 20 46 72 65 65 54 61 62 6c 65 28 0d 0a 20  id FreeTable(.. 
34180 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
34190 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
341a0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
341b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  {..            S
341c0 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  etTableError(pVt
341d0 61 62 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20  ab, null);..    
341e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
341f0 6d 6f 72 79 2e 46 72 65 65 28 70 56 74 61 62 29  mory.Free(pVtab)
34200 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
34210 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
34220 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
34230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34270 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
34280 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 43 75  region Native Cu
34290 72 73 6f 72 20 48 65 6c 70 65 72 20 4d 65 74 68  rsor Helper Meth
342a0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
342b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
342c0 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65      /// Allocate
342d0 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74  s a native sqlit
342e0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
342f0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
34300 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
34310 2f 20 72 65 74 75 72 6e 73 20 61 20 6e 61 74 69  / returns a nati
34320 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74  ve pointer to it
34330 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34340 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
34350 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
34360 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
34370 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
34380 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74  o a native sqlit
34390 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
343a0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
343b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
343c0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
343d0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
343e0 74 75 61 6c 20 49 6e 74 50 74 72 20 41 6c 6c 6f  tual IntPtr Allo
343f0 63 61 74 65 43 75 72 73 6f 72 28 29 0d 0a 20 20  cateCursor()..  
34400 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34410 20 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20       int size = 
34420 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
34430 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
34440 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
34450 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
34460 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 29  te3_vtab_cursor)
34470 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
34480 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 4d    return SQLiteM
34490 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73  emory.Allocate(s
344a0 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ize);..        }
344b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
344c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34500 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
34510 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
34520 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20        /// Frees 
34530 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  a native sqlite3
34540 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 73 74 72  _vtab_cursor str
34550 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
34560 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 20   provided..     
34570 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f     /// native po
34580 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20  inter to it...  
34590 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
345a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
345b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
345c0 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
345d0 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70    /// A native p
345e0 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69  ointer to a nati
345f0 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ve sqlite3_vtab_
34600 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
34610 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
34620 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
34630 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
34640 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
34650 46 72 65 65 43 75 72 73 6f 72 28 0d 0a 20 20 20  FreeCursor(..   
34660 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
34670 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
34680 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
34690 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  {..            S
346a0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
346b0 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
346c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
346d0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
346e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
346f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34730 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
34740 53 74 61 74 69 63 20 54 61 62 6c 65 20 4c 6f 6f  Static Table Loo
34750 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  kup Methods..   
34760 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
34770 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34780 52 65 61 64 73 20 61 6e 64 20 72 65 74 75 72 6e  Reads and return
34790 73 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69  s the native poi
347a0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
347b0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
347c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
347d0 72 75 63 74 75 72 65 20 62 61 73 65 64 20 6f 6e  ructure based on
347e0 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
347f0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
34800 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a  e3_vtab_cursor..
34810 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72 69          /// deri
34820 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
34830 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
34840 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
34850 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
34860 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
34870 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
34880 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
34890 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
348a0 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65  stance to be use
348b0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
348c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
348d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
348e0 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
348f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
34900 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
34910 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
34920 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
34930 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20  structure..     
34940 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 77 68 69 63     /// from whic
34950 68 20 74 6f 20 72 65 61 64 20 74 68 65 20 6e 61  h to read the na
34960 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
34970 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
34980 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
34990 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
349a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
349b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
349c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
349d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
349e0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
349f0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
34a00 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
34a10 75 72 65 20 2d 4f 52 2d 0d 0a 20 20 20 20 20 20  ure -OR-..      
34a20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
34a30 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e  "IntPtr.Zero" />
34a40 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
34a50 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
34a60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
34a70 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
34a80 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
34a90 50 74 72 20 54 61 62 6c 65 46 72 6f 6d 43 75 72  Ptr TableFromCur
34aa0 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  sor(..          
34ab0 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d    SQLiteModule m
34ac0 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  odule,..        
34ad0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
34ae0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
34af0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
34b00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
34b10 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e  ursor == IntPtr.
34b20 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
34b30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
34b40 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
34b50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
34b60 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
34b70 50 74 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20  Ptr(pCursor);.. 
34b80 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
34b90 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
34ba0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
34bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
34bf0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
34c00 6f 6e 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20  on Table Lookup 
34c10 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
34c20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
34c30 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64          /// Read
34c40 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
34c50 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
34c60 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
34c70 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
34c80 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
34c90 75 72 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ure based on the
34ca0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
34cb0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
34cc0 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
34cd0 20 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20      /// derived 
34ce0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
34cf0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
34d00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34d10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
34d20 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
34d30 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
34d40 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34d50 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
34d60 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
34d70 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
34d80 20 66 72 6f 6d 20 77 68 69 63 68 20 74 6f 20 72   from which to r
34d90 65 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 70  ead the native p
34da0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34db0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
34dc0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
34dd0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
34de0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
34df0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
34e00 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
34e10 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
34e20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
34e30 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
34e40 76 65 64 20 73 74 72 75 63 74 75 72 65 20 2d 4f  ved structure -O
34e50 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  R-..        /// 
34e60 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
34e70 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 69 74  r.Zero" /> if it
34e80 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
34e90 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  mined...        
34ea0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
34eb0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
34ec0 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72  d virtual IntPtr
34ed0 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72   TableFromCursor
34ee0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
34ef0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
34f00 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
34f10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34f20 20 20 20 20 20 72 65 74 75 72 6e 20 54 61 62 6c       return Tabl
34f30 65 46 72 6f 6d 43 75 72 73 6f 72 28 74 68 69 73  eFromCursor(this
34f40 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  , pCursor);..   
34f50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
34f60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34fb0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
34fc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34fd0 4c 6f 6f 6b 73 20 75 70 20 61 6e 64 20 72 65 74  Looks up and ret
34fe0 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72  urns the <see cr
34ff0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
35000 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
35010 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
35020 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20 6f 6e  nstance based on
35030 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
35040 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
35050 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
35060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
35070 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
35080 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
35090 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
350a0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
350b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
350c0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
350d0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
350e0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
350f0 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
35100 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
35110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
35120 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
35130 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
35140 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
35150 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
35160 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
35170 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   if..        ///
35180 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
35190 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62 65  ng one cannot be
351a0 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20   found...       
351b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
351c0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
351d0 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ed virtual SQLit
351e0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54 61  eVirtualTable Ta
351f0 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a  bleFromIntPtr(..
35200 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
35210 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
35220 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
35230 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35240 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74  if (pVtab == Int
35250 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
35260 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35270 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62            SetTab
35280 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 22  leError(pVtab, "
35290 69 6e 76 61 6c 69 64 20 6e 61 74 69 76 65 20 74  invalid native t
352a0 61 62 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  able");..       
352b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
352c0 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
352d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
352e0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
352f0 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a 0d  lTable table;...
35300 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
35310 28 28 74 61 62 6c 65 73 20 21 3d 20 6e 75 6c 6c  ((tables != null
35320 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
35330 20 20 20 20 20 20 74 61 62 6c 65 73 2e 54 72 79        tables.Try
35340 47 65 74 56 61 6c 75 65 28 70 56 74 61 62 2c 20  GetValue(pVtab, 
35350 6f 75 74 20 74 61 62 6c 65 29 29 0d 0a 20 20 20  out table))..   
35360 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35370 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
35380 72 6e 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20  rn table;..     
35390 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
353a0 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
353b0 45 72 72 6f 72 28 70 56 74 61 62 2c 20 48 65 6c  Error(pVtab, Hel
353c0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
353d0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
353e0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
353f0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
35400 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
35410 20 20 20 20 20 20 20 22 6d 61 6e 61 67 65 64 20         "managed 
35420 74 61 62 6c 65 20 66 6f 72 20 7b 30 7d 20 6e 6f  table for {0} no
35430 74 20 66 6f 75 6e 64 22 2c 20 70 56 74 61 62 29  t found", pVtab)
35440 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
35450 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
35460 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35470 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
354c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
354d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
354e0 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 6e 64  // Allocates and
354f0 20 72 65 74 75 72 6e 73 20 61 20 6e 61 74 69 76   returns a nativ
35500 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73  e pointer to a s
35510 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
35520 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
35530 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 20 63   structure and c
35540 72 65 61 74 65 73 20 61 6e 20 61 73 73 6f 63 69  reates an associ
35550 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 74  ation between it
35560 20 61 6e 64 20 74 68 65 20 73 70 65 63 69 66 69   and the specifi
35570 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
35580 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
35590 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
355a0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
355b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
355c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
355d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
355e0 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
355f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
35600 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
35610 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
35620 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
35630 74 6f 20 62 65 20 75 73 65 64 0d 0a 20 20 20 20  to be used..    
35640 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 63 72 65      /// when cre
35650 61 74 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69  ating the associ
35660 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
35670 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
35680 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
35690 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
356a0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
356b0 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65 33  ter to a sqlite3
356c0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
356d0 72 75 63 74 75 72 65 20 6f 72 0d 0a 20 20 20 20  ructure or..    
356e0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
356f0 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20  f="IntPtr.Zero" 
35700 2f 3e 20 69 66 20 74 68 65 20 6d 65 74 68 6f 64  /> if the method
35710 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79 20 72   fails for any r
35720 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eason...        
35730 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
35740 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
35750 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72  d virtual IntPtr
35760 20 54 61 62 6c 65 54 6f 49 6e 74 50 74 72 28 0d   TableToIntPtr(.
35770 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
35780 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
35790 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  table..         
357a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
357b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
357c0 28 28 74 61 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29  ((table == null)
357d0 20 7c 7c 20 28 74 61 62 6c 65 73 20 3d 3d 20 6e   || (tables == n
357e0 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
357f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
35800 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
35810 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
35820 20 70 56 74 61 62 20 3d 20 49 6e 74 50 74 72 2e   pVtab = IntPtr.
35830 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
35840 20 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73 20     bool success 
35850 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  = false;....    
35860 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
35870 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35880 20 20 20 20 20 20 20 20 20 20 20 20 70 56 74 61              pVta
35890 62 20 3d 20 41 6c 6c 6f 63 61 74 65 54 61 62 6c  b = AllocateTabl
358a0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
358b0 20 20 20 20 20 20 20 20 69 66 20 28 70 56 74 61          if (pVta
358c0 62 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b != IntPtr.Zero
358d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
358e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
358f0 20 20 20 20 20 20 20 20 20 20 5a 65 72 6f 54 61            ZeroTa
35900 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ble(pVtab);..   
35910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35920 20 74 61 62 6c 65 2e 4e 61 74 69 76 65 48 61 6e   table.NativeHan
35930 64 6c 65 20 3d 20 70 56 74 61 62 3b 0d 0a 20 20  dle = pVtab;..  
35940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35950 20 20 74 61 62 6c 65 73 2e 41 64 64 28 70 56 74    tables.Add(pVt
35960 61 62 2c 20 74 61 62 6c 65 29 3b 0d 0a 20 20 20  ab, table);..   
35970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35980 20 73 75 63 63 65 73 73 20 3d 20 74 72 75 65 3b   success = true;
35990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
359a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
359b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
359c0 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
359d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
359e0 20 20 20 20 20 20 20 20 69 66 20 28 21 73 75 63          if (!suc
359f0 63 65 73 73 20 26 26 20 28 70 56 74 61 62 20 21  cess && (pVtab !
35a00 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d  = IntPtr.Zero)).
35a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35a20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35a30 20 20 20 20 20 20 20 20 46 72 65 65 54 61 62 6c          FreeTabl
35a40 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  e(pVtab);..     
35a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
35a60 56 74 61 62 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Vtab = IntPtr.Ze
35a70 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
35a80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
35a90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
35aa0 20 20 20 20 20 72 65 74 75 72 6e 20 70 56 74 61       return pVta
35ab0 62 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  b;..        }.. 
35ac0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
35ad0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
35ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
35b30 23 72 65 67 69 6f 6e 20 43 75 72 73 6f 72 20 4c  #region Cursor L
35b40 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20  ookup Methods.. 
35b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
35b60 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35b70 2f 20 4c 6f 6f 6b 73 20 75 70 20 61 6e 64 20 72  / Looks up and r
35b80 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
35b90 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
35ba0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
35bb0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
35bc0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
35bd0 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74  based on the nat
35be0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
35bf0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
35c00 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
35c10 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
35c20 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
35c30 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
35c40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
35c50 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
35c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35c70 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
35c80 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
35c90 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
35ca0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
35cb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
35cc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
35cd0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
35ce0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
35cf0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
35d00 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
35d10 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
35d20 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
35d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
35d40 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
35d50 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
35d60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
35d70 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
35d80 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
35d90 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
35da0 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c 0d 0a 20  tance or null.. 
35db0 20 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74 68         /// if th
35dc0 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
35dd0 6f 6e 65 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f  one cannot be fo
35de0 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  und...        //
35df0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
35e00 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
35e10 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69  virtual SQLiteVi
35e20 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
35e30 20 43 75 72 73 6f 72 46 72 6f 6d 49 6e 74 50 74   CursorFromIntPt
35e40 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
35e50 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
35e60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
35e70 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
35e80 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
35e90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35ea0 20 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20   if (pCursor == 
35eb0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
35ec0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
35ee0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
35ef0 2c 20 22 69 6e 76 61 6c 69 64 20 6e 61 74 69 76  , "invalid nativ
35f00 65 20 63 75 72 73 6f 72 22 29 3b 0d 0a 20 20 20  e cursor");..   
35f10 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
35f20 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
35f30 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
35f40 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
35f50 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
35f60 20 63 75 72 73 6f 72 3b 0d 0a 0d 0a 20 20 20 20   cursor;....    
35f70 20 20 20 20 20 20 20 20 69 66 20 28 28 63 75 72          if ((cur
35f80 73 6f 72 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  sors != null) &&
35f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35fa0 20 20 63 75 72 73 6f 72 73 2e 54 72 79 47 65 74    cursors.TryGet
35fb0 56 61 6c 75 65 28 70 43 75 72 73 6f 72 2c 20 6f  Value(pCursor, o
35fc0 75 74 20 63 75 72 73 6f 72 29 29 0d 0a 20 20 20  ut cursor))..   
35fd0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35fe0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
35ff0 72 6e 20 63 75 72 73 6f 72 3b 0d 0a 20 20 20 20  rn cursor;..    
36000 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
36010 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
36020 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 48 65  eError(pVtab, He
36030 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
36040 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
36050 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
36060 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
36070 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
36080 20 20 20 20 20 20 20 20 22 6d 61 6e 61 67 65 64          "managed
36090 20 63 75 72 73 6f 72 20 66 6f 72 20 7b 30 7d 20   cursor for {0} 
360a0 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70 43 75 72  not found", pCur
360b0 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sor));....      
360c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
360d0 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  l;..        }...
360e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
360f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
36140 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
36150 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73     /// Allocates
36160 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6e   and returns a 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 0d 0a 20 20 20 20 20 20 20 20  cursor..        
361a0 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74 72 75  /// derived stru
361b0 63 74 75 72 65 20 61 6e 64 20 63 72 65 61 74 65  cture and create
361c0 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e  s an association
361d0 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64 20   between it and 
361e0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
361f0 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20   specified <see 
36200 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
36210 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
36220 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
36230 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
36240 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
36250 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
36260 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a  name="cursor">..
36270 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
36280 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
36290 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
362a0 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  sor" /> object i
362b0 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 0d 0a 20  nstance to be.. 
362c0 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 20         /// used 
362d0 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68  when creating th
362e0 65 20 61 73 73 6f 63 69 61 74 69 6f 6e 2e 0d 0a  e association...
362f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
36300 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
36310 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
36320 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
36330 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
36340 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
36350 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
36360 75 63 74 75 72 65 20 6f 72 0d 0a 20 20 20 20 20  ucture or..     
36370 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
36380 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
36390 3e 20 69 66 20 74 68 65 20 6d 65 74 68 6f 64 20  > if the method 
363a0 66 61 69 6c 73 20 66 6f 72 20 61 6e 79 20 72 65  fails for any re
363b0 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ason...        /
363c0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
363d0 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
363e0 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
363f0 43 75 72 73 6f 72 54 6f 49 6e 74 50 74 72 28 0d  CursorToIntPtr(.
36400 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
36410 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
36420 75 72 73 6f 72 20 63 75 72 73 6f 72 0d 0a 20 20  ursor cursor..  
36430 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
36440 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36450 20 20 20 20 69 66 20 28 28 63 75 72 73 6f 72 20      if ((cursor 
36460 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 63 75 72  == null) || (cur
36470 73 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a  sors == null))..
36480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36490 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
364a0 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
364b0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
364c0 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  r = IntPtr.Zero;
364d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
364e0 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c  ol success = fal
364f0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
36500 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
36510 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36520 20 20 20 20 20 20 20 70 43 75 72 73 6f 72 20 3d         pCursor =
36530 20 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72 28   AllocateCursor(
36540 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
36550 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f        if (pCurso
36560 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
36570 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
36580 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36590 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72            cursor
365a0 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20  .NativeHandle = 
365b0 70 43 75 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20  pCursor;..      
365c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75                cu
365d0 72 73 6f 72 73 2e 41 64 64 28 70 43 75 72 73 6f  rsors.Add(pCurso
365e0 72 2c 20 63 75 72 73 6f 72 29 3b 0d 0a 20 20 20  r, cursor);..   
365f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36600 20 73 75 63 63 65 73 73 20 3d 20 74 72 75 65 3b   success = true;
36610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36620 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36630 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36640 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
36650 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36660 20 20 20 20 20 20 20 20 69 66 20 28 21 73 75 63          if (!suc
36670 63 65 73 73 20 26 26 20 28 70 43 75 72 73 6f 72  cess && (pCursor
36680 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
36690 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
366a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
366b0 20 20 20 20 20 20 20 20 20 20 46 72 65 65 43 75            FreeCu
366c0 72 73 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rsor(pCursor);..
366d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
366e0 20 20 20 20 70 43 75 72 73 6f 72 20 3d 20 49 6e      pCursor = In
366f0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
36700 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
36710 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
36720 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
36730 72 6e 20 70 43 75 72 73 6f 72 3b 0d 0a 20 20 20  rn pCursor;..   
36740 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36750 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
36760 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
36770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
367b0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
367c0 20 46 75 6e 63 74 69 6f 6e 20 4c 6f 6f 6b 75 70   Function Lookup
367d0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
367e0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
367f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  .        /// Det
36800 65 72 69 6d 69 6e 65 73 20 74 68 65 20 6b 65 79  erimines the key
36810 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20   that should be 
36820 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79  used to identify
36830 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 0d 0a   and store the..
36840 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
36850 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e   cref="SQLiteFun
36860 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74  ction" /> object
36870 20 69 6e 73 74 61 6e 63 65 20 66 6f 72 20 74 68   instance for th
36880 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  e virtual table.
36890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 69 2e  .        /// (i.
368a0 65 2e 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  e. to be returne
368b0 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20 20  d via the..     
368c0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
368d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
368e0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
368f0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 29 2e  ion" /> method).
36900 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36910 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
36920 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
36930 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74  e="argumentCount
36940 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
36950 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72  The number of ar
36960 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 76  guments to the v
36970 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e  irtual table fun
36980 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
36990 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
369a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
369b0 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
369c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
369d0 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74 75  ame of the virtu
369e0 61 6c 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f  al table functio
369f0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
36a00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36a10 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
36a20 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20  e="function">.. 
36a30 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
36a40 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
36a50 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a  Function" /> obj
36a60 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
36a70 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
36a80 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 76        /// this v
36a90 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e  irtual table fun
36aa0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
36ab0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
36ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
36ad0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
36ae0 20 54 68 65 20 73 74 72 69 6e 67 20 74 68 61 74   The string that
36af0 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
36b00 74 6f 20 69 64 65 6e 74 69 66 79 20 61 6e 64 20  to identify and 
36b10 73 74 6f 72 65 20 74 68 65 20 76 69 72 74 75 61  store the virtua
36b20 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
36b30 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e  able function in
36b40 73 74 61 6e 63 65 2e 20 20 54 68 69 73 20 6d 65  stance.  This me
36b50 74 68 6f 64 20 63 61 6e 6e 6f 74 20 72 65 74 75  thod cannot retu
36b60 72 6e 20 6e 75 6c 6c 2e 20 20 49 66 20 6e 75 6c  rn null.  If nul
36b70 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  l..        /// i
36b80 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  s returned from 
36b90 74 68 69 73 20 6d 65 74 68 6f 64 2c 20 74 68 65  this method, the
36ba0 20 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64   behavior is und
36bb0 65 66 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20  efined...       
36bc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
36bd0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
36be0 65 64 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ed virtual strin
36bf0 67 20 47 65 74 46 75 6e 63 74 69 6f 6e 4b 65 79  g GetFunctionKey
36c00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
36c10 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74  nt argumentCount
36c20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
36c30 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20  tring name,..   
36c40 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 46           SQLiteF
36c50 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  unction function
36c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
36c70 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
36c80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 48          return H
36c90 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
36ca0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
36cb0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
36cc0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
36cd0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
36ce0 20 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 3a             "{0}:
36cf0 7b 31 7d 22 2c 20 61 72 67 75 6d 65 6e 74 43 6f  {1}", argumentCo
36d00 75 6e 74 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20  unt, name);..   
36d10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36d20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
36d30 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
36d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
36d80 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
36d90 20 54 61 62 6c 65 20 44 65 63 6c 61 72 61 74 69   Table Declarati
36da0 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  on Helper Method
36db0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
36dc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
36dd0 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
36de0 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20 73 63  o declare the sc
36df0 68 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72  hema for the vir
36e00 74 75 61 6c 20 74 61 62 6c 65 20 75 73 69 6e 67  tual table using
36e10 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
36e20 2f 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61  / specified data
36e30 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
36e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36e50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
36e60 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
36e70 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d  e="connection">.
36e80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
36e90 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
36ea0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e  teConnection" />
36eb0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
36ec0 20 74 6f 20 75 73 65 20 77 68 65 6e 0d 0a 20 20   to use when..  
36ed0 20 20 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72        /// declar
36ee0 69 6e 67 20 74 68 65 20 73 63 68 65 6d 61 20 6f  ing the schema o
36ef0 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
36f00 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ble.  This param
36f10 65 74 65 72 20 6d 61 79 20 6e 6f 74 0d 0a 20 20  eter may not..  
36f20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6e 75 6c        /// be nul
36f30 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  l...        /// 
36f40 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36f50 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
36f60 65 3d 22 73 71 6c 22 3e 0d 0a 20 20 20 20 20 20  e="sql">..      
36f70 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67    /// The string
36f80 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
36f90 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
36fa0 74 65 6d 65 6e 74 20 74 68 61 74 20 63 6f 6d 70  tement that comp
36fb0 6c 65 74 65 6c 79 0d 0a 20 20 20 20 20 20 20 20  letely..        
36fc0 2f 2f 2f 20 64 65 73 63 72 69 62 65 73 20 74 68  /// describes th
36fd0 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74 68 65  e schema for the
36fe0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
36ff0 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   This parameter 
37000 6d 61 79 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20  may not..       
37010 20 2f 2f 2f 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20   /// be null... 
37020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
37030 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
37040 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
37050 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
37060 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
37070 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
37080 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
37090 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65   to contain an e
370a0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rror..        //
370b0 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  / message...    
370c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
370d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
370e0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
370f0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
37100 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
37110 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
37120 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
37130 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
37140 69 72 74 75 61 6c 20 53 51 4c 69 74 65 45 72 72  irtual SQLiteErr
37150 6f 72 43 6f 64 65 20 44 65 63 6c 61 72 65 54 61  orCode DeclareTa
37160 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
37170 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
37180 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a  on connection,..
37190 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
371a0 6e 67 20 73 71 6c 2c 0d 0a 20 20 20 20 20 20 20  ng sql,..       
371b0 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
371c0 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
371d0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
371e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
371f0 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e  (connection == n
37200 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
37210 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
37220 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 69 6e       error = "in
37230 76 61 6c 69 64 20 63 6f 6e 6e 65 63 74 69 6f 6e  valid connection
37240 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
37250 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
37260 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
37270 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
37280 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37290 53 51 4c 69 74 65 42 61 73 65 20 73 71 6c 69 74  SQLiteBase sqlit
372a0 65 42 61 73 65 20 3d 20 63 6f 6e 6e 65 63 74 69  eBase = connecti
372b0 6f 6e 2e 5f 73 71 6c 3b 0d 0a 0d 0a 20 20 20 20  on._sql;....    
372c0 20 20 20 20 20 20 20 20 69 66 20 28 73 71 6c 69          if (sqli
372d0 74 65 42 61 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d  teBase == null).
372e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
372f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37300 65 72 72 6f 72 20 3d 20 22 63 6f 6e 6e 65 63 74  error = "connect
37310 69 6f 6e 20 68 61 73 20 69 6e 76 61 6c 69 64 20  ion has invalid 
37320 68 61 6e 64 6c 65 22 3b 0d 0a 20 20 20 20 20 20  handle";..      
37330 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37340 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
37350 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
37360 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
37370 20 20 20 20 20 20 69 66 20 28 73 71 6c 20 3d 3d        if (sql ==
37380 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
37390 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
373a0 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22         error = "
373b0 69 6e 76 61 6c 69 64 20 53 51 4c 20 73 74 61 74  invalid SQL stat
373c0 65 6d 65 6e 74 22 3b 0d 0a 20 20 20 20 20 20 20  ement";..       
373d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
373e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
373f0 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  Error;..        
37400 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
37410 20 20 20 20 20 72 65 74 75 72 6e 20 73 71 6c 69       return sqli
37420 74 65 42 61 73 65 2e 44 65 63 6c 61 72 65 56 69  teBase.DeclareVi
37430 72 74 75 61 6c 54 61 62 6c 65 28 74 68 69 73 2c  rtualTable(this,
37440 20 73 71 6c 2c 20 72 65 66 20 65 72 72 6f 72 29   sql, ref error)
37450 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
37460 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
37470 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
37480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
374d0 72 65 67 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 20  region Function 
374e0 44 65 63 6c 61 72 61 74 69 6f 6e 20 48 65 6c 70  Declaration Help
374f0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
37500 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
37510 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
37520 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20  alls the native 
37530 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
37540 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ary in order to 
37550 64 65 63 6c 61 72 65 20 61 20 76 69 72 74 75 61  declare a virtua
37560 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
37570 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e  able function in
37580 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20 63   response to a c
37590 61 6c 6c 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20  all into the..  
375a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
375b0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
375c0 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
375d0 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
375e0 2f 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22  / or <see cref="
375f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
37600 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e  ule.xConnect" />
37610 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
37620 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
37630 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
37640 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
37650 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
37660 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
37670 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n">..        ///
37680 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
37690 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
376a0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
376b0 61 6e 63 65 20 74 6f 20 75 73 65 20 77 68 65 6e  ance to use when
376c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
376d0 63 6c 61 72 69 6e 67 20 74 68 65 20 73 63 68 65  claring the sche
376e0 6d 61 20 6f 66 20 74 68 65 20 76 69 72 74 75 61  ma of the virtua
376f0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
37700 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
37710 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
37720 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e  am name="argumen
37730 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 20 20  tCount">..      
37740 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
37750 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f   of arguments to
37760 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
37770 69 6e 67 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20  ing declared... 
37780 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
37790 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
377a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
377b0 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  me">..        //
377c0 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
377d0 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
377e0 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
377f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
37800 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
37810 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
37820 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37830 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
37840 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68  e contents of th
37850 69 73 20 70 61 72 61 6d 65 74 65 72 20 61 72 65  is parameter are
37860 20 75 6e 64 65 66 69 6e 65 64 2e 20 20 55 70 6f   undefined.  Upo
37870 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  n..        /// f
37880 61 69 6c 75 72 65 2c 20 69 74 20 73 68 6f 75 6c  ailure, it shoul
37890 64 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70  d contain an app
378a0 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20 6d  ropriate error m
378b0 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20  essage...       
378c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
378d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
378e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
378f0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
37900 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
37910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
37920 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
37930 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
37940 75 61 6c 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ual SQLiteErrorC
37950 6f 64 65 20 44 65 63 6c 61 72 65 46 75 6e 63 74  ode DeclareFunct
37960 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
37970 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
37980 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a  on connection,..
37990 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
379a0 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 0d 0a  argumentCount,..
379b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
379c0 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ng name,..      
379d0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
379e0 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
379f0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
37a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
37a10 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20   (connection == 
37a20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
37a30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37a40 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 69        error = "i
37a50 6e 76 61 6c 69 64 20 63 6f 6e 6e 65 63 74 69 6f  nvalid connectio
37a60 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n";..           
37a70 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
37a80 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
37a90 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
37aa0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
37ab0 20 53 51 4c 69 74 65 42 61 73 65 20 73 71 6c 69   SQLiteBase sqli
37ac0 74 65 42 61 73 65 20 3d 20 63 6f 6e 6e 65 63 74  teBase = connect
37ad0 69 6f 6e 2e 5f 73 71 6c 3b 0d 0a 0d 0a 20 20 20  ion._sql;....   
37ae0 20 20 20 20 20 20 20 20 20 69 66 20 28 73 71 6c           if (sql
37af0 69 74 65 42 61 73 65 20 3d 3d 20 6e 75 6c 6c 29  iteBase == null)
37b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
37b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37b20 20 65 72 72 6f 72 20 3d 20 22 63 6f 6e 6e 65 63   error = "connec
37b30 74 69 6f 6e 20 68 61 73 20 69 6e 76 61 6c 69 64  tion has invalid
37b40 20 68 61 6e 64 6c 65 22 3b 0d 0a 20 20 20 20 20   handle";..     
37b50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
37b60 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
37b70 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
37b80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
37b90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 71         return sq
37ba0 6c 69 74 65 42 61 73 65 2e 44 65 63 6c 61 72 65  liteBase.Declare
37bb0 56 69 72 74 75 61 6c 46 75 6e 63 74 69 6f 6e 28  VirtualFunction(
37bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37bd0 20 20 74 68 69 73 2c 20 61 72 67 75 6d 65 6e 74    this, argument
37be0 43 6f 75 6e 74 2c 20 6e 61 6d 65 2c 20 72 65 66  Count, name, ref
37bf0 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20   error);..      
37c00 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
37c10 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
37c20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
37c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
37c70 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 45 72        #region Er
37c80 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20 50 72 6f  ror Handling Pro
37c90 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20  perties..       
37ca0 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6c 6f   private bool lo
37cb0 67 45 72 72 6f 72 73 3b 0d 0a 20 20 20 20 20 20  gErrors;..      
37cc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
37cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74  .        /// Ret
37ce0 75 72 6e 73 20 6f 72 20 73 65 74 73 20 61 20 62  urns or sets a b
37cf0 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 20 69 6e 64  oolean value ind
37d00 69 63 61 74 69 6e 67 20 77 68 65 74 68 65 72 20  icating whether 
37d10 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
37d20 20 20 20 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72         /// error
37d30 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  s should be logg
37d40 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c 73 65  ed using the <se
37d50 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
37d60 67 22 20 2f 3e 20 63 6