System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 82ec6b859df176550bcc2fc427b6d7ce69554ba8:


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 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
2cb0: 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
2cc0: 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75 63  ite3_value struc
2cd0: 74 75 72 65 20 69 6e 74 6f 0d 0a 20 20 20 20 20  ture into..     
2ce0: 20 20 20 2f 2f 2f 20 61 20 6d 61 6e 61 67 65 64     /// a managed
2cf0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2d00: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
2d10: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2d40: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2d50: 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
2d60: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
2d70: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74  pointer to a nat
2d80: 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ive sqlite3_valu
2d90: 65 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 63  e structure to c
2da0: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
2db0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2dc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
2de0: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 3c 73  / The managed <s
2df0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
2e00: 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  alue" /> object 
2e10: 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
2e20: 20 75 70 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f   upon..        /
2e30: 2f 2f 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  // failure...   
2e40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2e50: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
2e60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53 51 4c  ernal static SQL
2e70: 69 74 65 56 61 6c 75 65 20 46 72 6f 6d 49 6e 74  iteValue FromInt
2e80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2e90: 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d    IntPtr pValue.
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2eb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ec0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
2ed0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2ee0: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f00: 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c  rn new SQLiteVal
2f10: 75 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  ue(pValue);..   
2f20: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2fa0: 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
2fb0: 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
2fc0: 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e  ve pointers to n
2fd0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61  ative sqlite3_va
2fe0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
2ff0: 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 74 6f   structures into
3000: 20 61 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79   a managed array
3010: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
3020: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 0d 0a  QLiteValue" />..
3030: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
3040: 63 74 20 69 6e 73 74 61 6e 63 65 73 2e 0d 0a 20  ct instances... 
3050: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3060: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3080: 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
3090: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
30a0: 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68  f elements in th
30b0: 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
30c0: 6f 66 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  of native sqlite
30d0: 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  3_value..       
30e0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 2e   /// structures.
30f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3100: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
3110: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3120: 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
3130: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
3140: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
3150: 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
3160: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
3170: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  alue..        //
3180: 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f 20  / structures to 
3190: 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
31a0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
31b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
31c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
31d0: 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61  // The managed a
31e0: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
31f0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
3200: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
3210: 63 65 73 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ces or..        
3220: 2f 2f 2f 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61  /// null upon fa
3230: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
3240: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3250: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
3260: 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 56 61   static SQLiteVa
3270: 6c 75 65 5b 5d 20 41 72 72 61 79 46 72 6f 6d 53  lue[] ArrayFromS
3280: 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20  izeAndIntPtr(.. 
3290: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
32a0: 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
32b0: 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
32c0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32e0: 20 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20       if (argc < 
32f0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
3300: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3310: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3320: 69 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50  if (argv == IntP
3330: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
3340: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3350: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3360: 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
3370: 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  e[] result = new
3380: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 61 72 67   SQLiteValue[arg
3390: 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c];....         
33a0: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
33b0: 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d 20  x = 0, offset = 
33c0: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
33d0: 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c 20          index < 
33e0: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d 0a  result.Length;..
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66 66      index++, off
3410: 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69  set += IntPtr.Si
3420: 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze)..           
3430: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3440: 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67 20      IntPtr pArg 
3450: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
3460: 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76 2c  ReadIntPtr(argv,
3470: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3490: 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70 41  ult[index] = (pA
34a0: 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rg != IntPtr.Zer
34b0: 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  o) ?..          
34c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
34d0: 4c 69 74 65 56 61 6c 75 65 28 70 41 72 67 29 20  LiteValue(pArg) 
34e0: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
34f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3500: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
3510: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
3520: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
3530: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
3540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3590: 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
35a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
35b0: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
35c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
35d0: 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
35e0: 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
35f0: 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
3600: 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
3610: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
3620: 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
3630: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
3640: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3650: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3660: 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
3670: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
3680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
3690: 20 7b 20 72 65 74 75 72 6e 20 70 56 61 6c 75 65   { return pValue
36a0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
36b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
36c0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
36d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3710: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3720: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
3730: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
3740: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
3750: 20 70 65 72 73 69 73 74 65 64 3b 0d 0a 20 20 20   persisted;..   
3760: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3770: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3780: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
3790: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
37a0: 51 4c 69 74 65 20 76 61 6c 75 65 20 68 61 73 20  QLite value has 
37b0: 62 65 65 6e 20 73 75 63 63 65 73 73 66 75 6c 6c  been successfull
37c0: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
37d0: 65 72 73 69 73 74 65 64 20 61 73 20 61 20 6d 61  ersisted as a ma
37e0: 6e 61 67 65 64 20 76 61 6c 75 65 20 77 69 74 68  naged value with
37f0: 69 6e 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  in this object i
3800: 6e 73 74 61 6e 63 65 20 28 69 2e 65 2e 20 74 68  nstance (i.e. th
3810: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
3820: 73 65 65 20 63 72 65 66 3d 22 56 61 6c 75 65 22  see cref="Value"
3830: 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 6d 61 79   /> property may
3840: 20 74 68 65 6e 20 62 65 20 72 65 61 64 20 73 75   then be read su
3850: 63 63 65 73 73 66 75 6c 6c 79 29 2e 0d 0a 20 20  ccessfully)...  
3860: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3870: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3880: 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 73 69 73  blic bool Persis
3890: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ted..        {..
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
38b0: 7b 20 72 65 74 75 72 6e 20 70 65 72 73 69 73 74  { return persist
38c0: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ed; }..        }
38d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
3930: 72 69 76 61 74 65 20 6f 62 6a 65 63 74 20 76 61  rivate object va
3940: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue;..        //
3950: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3960: 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
3970: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 66 6f  managed value fo
3980: 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  r this object in
3990: 73 74 61 6e 63 65 20 69 73 20 61 76 61 69 6c 61  stance is availa
39a0: 62 6c 65 20 28 69 2e 65 2e 20 69 74 0d 0a 20 20  ble (i.e. it..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 62 65        /// has be
39c0: 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 70 65  en previously pe
39d0: 72 73 69 73 74 65 64 20 76 69 61 20 74 68 65 20  rsisted via the 
39e0: 3c 73 65 65 20 63 72 65 66 3d 22 50 65 72 73 69  <see cref="Persi
39f0: 73 74 22 20 2f 3e 29 20 6d 65 74 68 6f 64 2c 0d  st" />) method,.
3a00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
3a10: 74 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  t value is retur
3a20: 6e 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ned; otherwise, 
3a30: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20  an exception is 
3a40: 74 68 72 6f 77 6e 2e 20 20 54 68 65 0d 0a 20 20  thrown.  The..  
3a50: 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
3a60: 65 64 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  ed value may be 
3a70: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
3a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3a90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
3aa0: 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20  ject Value..    
3ab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ac0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3ad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ae0: 20 20 20 20 20 20 20 69 66 20 28 21 70 65 72 73         if (!pers
3af0: 69 73 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20  isted)..        
3b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3b20: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
3b30: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
3b40: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61               "va
3b60: 6c 75 65 20 77 61 73 20 6e 6f 74 20 70 65 72 73  lue was not pers
3b70: 69 73 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  isted");..      
3b80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3ba0: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
3bb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3bc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3bd0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3be0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3c30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3c40: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
3c50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3c60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3c70: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3c80: 75 72 6e 73 20 74 68 65 20 74 79 70 65 20 61 66  urns the type af
3c90: 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74 65  finity associate
3ca0: 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75  d with this valu
3cb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
3cc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3cd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
3ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
3cf0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
3d00: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3d10: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
3d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3d30: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3d40: 62 6c 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  blic TypeAffinit
3d50: 79 20 47 65 74 54 79 70 65 41 66 66 69 6e 69 74  y GetTypeAffinit
3d60: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  y()..        {..
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d80: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
3d90: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 54 79  .Zero) return Ty
3da0: 70 65 41 66 66 69 6e 69 74 79 2e 4e 6f 6e 65 3b  peAffinity.None;
3db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3dc0: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
3dd0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
3de0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 70 56 61 6c  _value_type(pVal
3df0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3e00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3e60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3e70: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3e80: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  d returns the nu
3e90: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 73  mber of bytes as
3ea0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
3eb0: 69 73 20 76 61 6c 75 65 2c 20 69 66 0d 0a 20 20  is value, if..  
3ec0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 72 65 66        /// it ref
3ed0: 65 72 73 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ers to a UTF-8 e
3ee0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 0d 0a  ncoded string...
3ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
3f00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3f10: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3f20: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
3f30: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61  umber of bytes a
3f40: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
3f50: 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65 20  his value.  The 
3f60: 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 0d 0a  returned value..
3f70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
3f80: 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  be zero...      
3f90: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
3fa0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3fb0: 20 69 6e 74 20 47 65 74 42 79 74 65 73 28 29 0d   int GetBytes().
3fc0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3fd0: 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
3fe0: 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
3ff0: 6f 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20  o) return 0;..  
4000: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4010: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
4020: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
4030: 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65 29  ue_bytes(pValue)
4040: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4050: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
40a0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
40b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
40c0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
40d0: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
40e0: 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
40f0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4100: 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
4110: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
4120: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4130: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
4140: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4150: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
4160: 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 61 73  ef="Int32" /> as
4170: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4180: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
4190: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
41a0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
41b0: 63 20 69 6e 74 20 47 65 74 49 6e 74 28 29 0d 0a  c int GetInt()..
41c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
41d0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
41e0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
41f0: 29 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74  ) return default
4200: 28 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  (int);..        
4210: 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
4220: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4230: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
4240: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
4250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
42b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
42c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
42d0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
42e0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
42f0: 74 36 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74  t64" /> associat
4300: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
4310: 20 2f 2f 2f 20 74 68 69 73 20 76 61 6c 75 65 2e   /// this value.
4320: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4330: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4340: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4350: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
4360: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
4370: 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  4" /> associated
4380: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
4390: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
43a0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
43b0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 47     public long G
43c0: 65 74 49 6e 74 36 34 28 29 0d 0a 20 20 20 20 20  etInt64()..     
43d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
43e0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
43f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4400: 75 72 6e 20 64 65 66 61 75 6c 74 28 6c 6f 6e 67  urn default(long
4410: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4420: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4430: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4440: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4450: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4460: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
4470: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66  (pValue);..#elif
4480: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
4490: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  D..            l
44a0: 6f 6e 67 20 76 61 6c 75 65 20 3d 20 30 3b 0d 0a  ong value = 0;..
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
44c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
44d0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
44e0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c  t64_interop(pVal
44f0: 75 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  ue, ref value);.
4500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4510: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73  urn value;..#els
4520: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e..            t
4530: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
4540: 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
4550: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
4560: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4570: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
45c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
45d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
45e0: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
45f0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
4600: 44 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63  Double" /> assoc
4610: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
4620: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
4630: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
4640: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4650: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4660: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
4670: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
4680: 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69  ouble" /> associ
4690: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
46a0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
46b0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
46c0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
46d0: 75 62 6c 65 20 47 65 74 44 6f 75 62 6c 65 28 29  uble GetDouble()
46e0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
46f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4700: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4710: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4720: 6c 74 28 64 6f 75 62 6c 65 29 3b 0d 0a 0d 0a 23  lt(double);....#
4730: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4740: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
4750: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4760: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
4770: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4780: 6c 75 65 5f 64 6f 75 62 6c 65 28 70 56 61 6c 75  lue_double(pValu
4790: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
47a0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47b0: 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
47c0: 76 61 6c 75 65 20 3d 20 30 2e 30 3b 0d 0a 20 20  value = 0.0;..  
47d0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
47e0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
47f0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
4800: 6c 65 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c 75  le_interop(pValu
4810: 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a  e, ref value);..
4820: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4830: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73 65  rn value;..#else
4840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4850: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
4860: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
4870: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
4880: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4890: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
48e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
48f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4900: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4910: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
4920: 74 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69  tring" /> associ
4930: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
4940: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
4950: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
4960: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4970: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4980: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
4990: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
49a0: 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69 61  ring" /> associa
49b0: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
49c0: 6c 75 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20  lue.  The value 
49d0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
49e0: 63 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 20 74  converted from t
49f0: 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
4a00: 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69 6e 67  g prior to being
4a10: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4a20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4a30: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
4a40: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72  ic string GetStr
4a50: 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
4a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4a70: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4a80: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4a90: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4aa0: 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 3b       int length;
4ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
4ac0: 74 50 74 72 20 70 53 74 72 69 6e 67 3b 0d 0a 0d  tPtr pString;...
4ad0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
4ae0: 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
4af0: 20 20 6c 65 6e 67 74 68 20 3d 20 55 6e 73 61 66    length = Unsaf
4b00: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4b10: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
4b20: 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  es(pValue);..   
4b30: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
4b40: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
4b50: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
4b60: 61 6c 75 65 5f 74 65 78 74 28 70 56 61 6c 75 65  alue_text(pValue
4b70: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
4b80: 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20         length = 
4b90: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
4ba0: 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61    pString = Unsa
4bb0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
4bc0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
4bd0: 78 74 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  xt_interop(..   
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61               pVa
4bf0: 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68 29  lue, ref length)
4c00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
4c10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4c20: 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
4c30: 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
4c40: 72 28 70 53 74 72 69 6e 67 2c 20 6c 65 6e 67 74  r(pString, lengt
4c50: 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  h);..        }..
4c60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
4cc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4cd0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64      /// Gets and
4ce0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
4cf0: 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e  e cref="Byte" />
4d00: 20 61 72 72 61 79 20 61 73 73 6f 63 69 61 74 65   array associate
4d10: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
4d20: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
4d30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
4d40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4d50: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4d60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
4d70: 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74 65 22  <see cref="Byte"
4d80: 20 2f 3e 20 61 72 72 61 79 20 61 73 73 6f 63 69   /> array associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
4da0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
4db0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4dc0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
4dd0: 74 65 5b 5d 20 47 65 74 42 6c 6f 62 28 29 0d 0a  te[] GetBlob()..
4de0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4df0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
4e00: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
4e10: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
4e30: 74 75 72 6e 20 53 51 4c 69 74 65 42 79 74 65 73  turn SQLiteBytes
4e40: 2e 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  .FromIntPtr(..  
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
4e60: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4e70: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4e80: 62 6c 6f 62 28 70 56 61 6c 75 65 29 2c 20 47 65  blob(pValue), Ge
4e90: 74 42 79 74 65 73 28 29 29 3b 0d 0a 20 20 20 20  tBytes());..    
4ea0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4eb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ef0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4f00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4f10: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4f20: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4f30: 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62  an <see cref="Ob
4f40: 6a 65 63 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63  ject" /> instanc
4f50: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
4f60: 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
4f70: 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  his value...    
4f80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4fa0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4fb0: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4fc0: 63 72 65 66 3d 22 4f 62 6a 65 63 74 22 20 2f 3e  cref="Object" />
4fd0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4fe0: 20 74 68 69 73 20 76 61 6c 75 65 2e 20 20 49 66   this value.  If
4ff0: 20 74 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   the type..     
5000: 20 20 20 2f 2f 2f 20 61 66 66 69 6e 69 74 79 20     /// affinity 
5010: 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73  of the object is
5020: 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 63 61 6e 6e   unknown or cann
5030: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
5040: 2c 20 61 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  , a null..      
5050: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c    /// value will
5060: 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20   be returned... 
5070: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
5080: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
5090: 75 62 6c 69 63 20 6f 62 6a 65 63 74 20 47 65 74  ublic object Get
50a0: 4f 62 6a 65 63 74 28 29 0d 0a 20 20 20 20 20 20  Object()..      
50b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
50c0: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
50d0: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
50e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
50f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5100: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5110: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5130: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5150: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
5160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5180: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5190: 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20  ity.Int64:..    
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
51c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
51d0: 6e 20 47 65 74 49 6e 74 36 34 28 29 3b 0d 0a 20  n GetInt64();.. 
51e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5200: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
5210: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 3a 0d  ffinity.Double:.
5220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5230: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5250: 72 65 74 75 72 6e 20 47 65 74 44 6f 75 62 6c 65  return GetDouble
5260: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
5270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5280: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5290: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
52a0: 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt:..           
52b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
52c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52d0: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 74      return GetSt
52e0: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
52f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5320: 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20 20 20  y.Blob:..       
5330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
5360: 65 74 42 79 74 65 73 28 29 3b 0d 0a 20 20 20 20  etBytes();..    
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
5390: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
53a0: 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a 20 20 20 20  nity.Null:..    
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
53d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
53e0: 6e 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d  n DBNull.Value;.
53f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5400: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
5410: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
5420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5430: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5470: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5480: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
5490: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
54f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5500: 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74 68 65      /// Uses the
5510: 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68 61   native value ha
5520: 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61  ndle to obtain a
5530: 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d 61 6e  nd store the man
5540: 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20  aged value..    
5550: 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69 73      /// for this
5560: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
5570: 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20 69 74  , thus saving it
5580: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 2e 20   for later use. 
5590: 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   The type..     
55a0: 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d 61     /// of the ma
55b0: 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73 20 64  naged value is d
55c0: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
55d0: 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 6f   type affinity o
55e0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
55f0: 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75 65 2e  // native value.
5600: 20 20 49 66 20 74 68 65 20 74 79 70 65 20 61 66    If the type af
5610: 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20 72 65  finity is not re
5620: 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73  cognized by this
5630: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
5640: 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69 73  thod, no work is
5650: 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65 20   done and false 
5660: 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  is returned...  
5670: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5680: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5690: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
56a0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
56b0: 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
56c0: 76 61 6c 75 65 20 77 61 73 20 70 65 72 73 69 73  value was persis
56d0: 74 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ted successfully
56e0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
56f0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
5700: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50     public bool P
5710: 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20 20 20  ersist()..      
5720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5730: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
5740: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
5750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5760: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5770: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5780: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
57c0: 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ue = null;..    
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57e0: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
57f0: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
5800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5810: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
5820: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5840: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5850: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
5860: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a 0d  Affinity.Int64:.
5870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5880: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74 36 34  value = GetInt64
58b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
58d0: 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73  ventNativeAccess
58e0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5900: 75 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d  urn (persisted =
5910: 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20   true);..       
5920: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5940: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5950: 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20  y.Double:..     
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5980: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5990: 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d 0a  = GetDouble();..
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e          PreventN
59c0: 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a  ativeAccess();..
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
59f0: 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65  persisted = true
5a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5a10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5a20: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5a30: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
5a40: 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
5a50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a70: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 53 74     value = GetSt
5a80: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5aa0: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
5ab0: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
5ae0: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5b10: 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66      case TypeAff
5b20: 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20  inity.Blob:..   
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
5b60: 65 20 3d 20 47 65 74 42 79 74 65 73 28 29 3b 0d  e = GetBytes();.
5b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5b80: 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74           Prevent
5b90: 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d  NativeAccess();.
5ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5bb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5bc0: 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75  (persisted = tru
5bd0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
5be0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5c00: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
5c10: 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll:..           
5c20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c40: 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42 4e 75      value = DBNu
5c50: 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ll.Value;..     
5c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c70: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
5c80: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
5c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ca0: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
5cb0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
5cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5ce0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5d20: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
5d50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
5d60: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
5d70: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
5d80: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
5d90: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
5de0: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
5df0: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
5e00: 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a  Op Enumeration..
5e10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5e20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65  >..    /// These
5e30: 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64   are the allowed
5e40: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
5e50: 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74 20 61  operators that a
5e60: 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a 20 20  re part of a..  
5e70: 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74    /// constraint
5e80: 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45   term in the WHE
5e90: 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61 20 71  RE clause of a q
5ea0: 75 65 72 79 20 74 68 61 74 20 75 73 65 73 20 61  uery that uses a
5eb0: 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f   virtual..    //
5ec0: 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  / table...    //
5ed0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5ee0: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
5ef0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5f00: 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20 20  intOp : byte..  
5f10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
5f20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5f30: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
5f40: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
5f50: 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61  e equality opera
5f60: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5f70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5f80: 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20 3d 20        EqualTo = 
5f90: 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  2,....        //
5fa0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5fb0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5fc0: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5fd0: 68 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  he greater than 
5fe0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5ff0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6000: 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61 74  >..        Great
6010: 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a 20  erThan = 4,.... 
6020: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6030: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6040: 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
6050: 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73  resents the less
6060: 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
6070: 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  o operator...   
6080: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6090: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73  ry>..        Les
60a0: 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d  sThanOrEqualTo =
60b0: 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   8,....        /
60c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
60d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
60e0: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
60f0: 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 70  the less than op
6100: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
6110: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6120: 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54 68 61  .        LessTha
6130: 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20  n = 16,....     
6140: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6150: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
6160: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
6170: 6e 74 73 20 74 68 65 20 67 72 65 61 74 65 72 20  nts the greater 
6180: 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
6190: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
61a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
61b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61  y>..        Grea
61c0: 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f  terThanOrEqualTo
61d0: 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 32,....      
61e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
61f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
6200: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
6210: 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  ts the MATCH ope
6220: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
6230: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6240: 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 3d 20          Match = 
6250: 36 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  64,....        /
6260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6270: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
6280: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
6290: 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  the LIKE operato
62a0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
62b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
62c0: 20 20 20 20 4c 69 6b 65 20 3d 20 36 35 2c 0d 0a      Like = 65,..
62d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
62e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
62f0: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
6300: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 47  represents the G
6310: 4c 4f 42 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  LOB operator... 
6320: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6330: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47  mary>..        G
6340: 6c 6f 62 20 3d 20 36 36 2c 0d 0a 0d 0a 20 20 20  lob = 66,....   
6350: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6360: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6370: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
6380: 73 65 6e 74 73 20 74 68 65 20 52 45 47 45 58 50  sents the REGEXP
6390: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
63a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
63b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 52 65 67 65  y>..        Rege
63c0: 78 70 20 3d 20 36 37 2c 0d 0a 0d 0a 20 20 20 20  xp = 67,....    
63d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
63e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
63f0: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
6400: 65 6e 74 73 20 74 68 65 20 69 6e 65 71 75 61 6c  ents the inequal
6410: 69 74 79 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  ity operator... 
6420: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6430: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e  mary>..        N
6440: 6f 74 45 71 75 61 6c 54 6f 20 3d 20 36 38 2c 0d  otEqualTo = 68,.
6450: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6460: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6470: 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
6480: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
6490: 49 53 20 4e 4f 54 20 6f 70 65 72 61 74 6f 72 2e  IS NOT operator.
64a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
64b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
64c0: 20 20 49 73 4e 6f 74 20 3d 20 36 39 2c 0d 0a 0d    IsNot = 69,...
64d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
64e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
64f0: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
6500: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 49 53  epresents the IS
6510: 20 4e 4f 54 20 4e 55 4c 4c 20 6f 70 65 72 61 74   NOT NULL operat
6520: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
6530: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6540: 20 20 20 20 20 49 73 4e 6f 74 4e 75 6c 6c 20 3d       IsNotNull =
6550: 20 37 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   70,....        
6560: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6570: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
6580: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
6590: 20 74 68 65 20 49 53 20 4e 55 4c 4c 20 6f 70 65   the IS NULL ope
65a0: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
65b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
65c0: 20 20 20 20 20 20 20 20 49 73 4e 75 6c 6c 20 3d          IsNull =
65d0: 20 37 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   71,....        
65e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
65f0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
6600: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
6610: 20 74 68 65 20 49 53 20 6f 70 65 72 61 74 6f 72   the IS operator
6620: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6630: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6640: 20 20 20 49 73 20 3d 20 37 32 0d 0a 20 20 20 20     Is = 72..    
6650: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
6660: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
66c0: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 46  ion SQLiteIndexF
66d0: 6c 61 67 73 20 45 6e 75 6d 65 72 61 74 69 6f 6e  lags Enumeration
66e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
66f0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
6700: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
6710: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
6720: 65 20 69 6e 64 65 78 20 66 6c 61 67 73 20 66 72  e index flags fr
6730: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  om the..    /// 
6740: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
6750: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
6760: 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
6770: 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  thod...    /// <
6780: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
6790: 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20 20 70 75  Flags()]..    pu
67a0: 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
67b0: 49 6e 64 65 78 46 6c 61 67 73 0d 0a 20 20 20 20  IndexFlags..    
67c0: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
67d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
67e0: 20 20 2f 2f 2f 20 4e 6f 20 73 70 65 63 69 61 6c    /// No special
67f0: 20 68 61 6e 64 6c 69 6e 67 2e 20 20 54 68 69 73   handling.  This
6800: 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2e   is the default.
6810: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6820: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6830: 20 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 0d    None = 0x0,...
6840: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6850: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6860: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 69  /// This value i
6870: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68  ndicates that th
6880: 65 20 73 63 61 6e 20 6f 66 20 74 68 65 20 69 6e  e scan of the in
6890: 64 65 78 20 77 69 6c 6c 20 76 69 73 69 74 20 61  dex will visit a
68a0: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  t..        /// m
68b0: 6f 73 74 20 6f 6e 65 20 72 6f 77 2e 0d 0a 20 20  ost one row...  
68c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
68d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 53 63  ary>..        Sc
68e0: 61 6e 55 6e 69 71 75 65 20 3d 20 30 78 31 0d 0a  anUnique = 0x1..
68f0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
6900: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6950: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
6960: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
6970: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 48 65  dexConstraint He
6980: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
6990: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
69a0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
69b0: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
69c0: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
69d0: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
69e0: 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20   structure..    
69f0: 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  /// from the SQL
6a00: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
6a10: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6a20: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
6a30: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
6a40: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
6a50: 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
6a60: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
6a70: 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f  ernal Constructo
6a80: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
6a90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6aa0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
6ab0: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
6ac0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
6ad0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
6ae0: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
6af0: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  /// sqlite3_inde
6b00: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72  x_constraint str
6b10: 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
6b20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
6b40: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72  ram name="constr
6b50: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
6b60: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73  /// The native s
6b70: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
6b80: 73 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72  straint structur
6b90: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
6ba0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6bb0: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
6bc0: 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  l SQLiteIndexCon
6bd0: 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
6be0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
6bf0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
6c00: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
6c10: 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  nt constraint.. 
6c20: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
6c30: 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
6c40: 28 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c  (constraint.iCol
6c50: 75 6d 6e 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e  umn, constraint.
6c60: 6f 70 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75  op, constraint.u
6c70: 73 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  sable,..        
6c80: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
6c90: 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65  raint.iTermOffse
6ca0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
6cb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
6cc0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
6cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
6ce0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
6cf0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
6d40: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
6d50: 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f  ivate Constructo
6d60: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
6d70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6d80: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
6d90: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
6da0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
6db0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
6dc0: 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  field..        /
6dd0: 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  // values...    
6de0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6df0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6e00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f  <param name="iCo
6e10: 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  lumn">..        
6e20: 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65  /// Column on le
6e30: 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ft-hand side of 
6e40: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
6e50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6e60: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6e70: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 22 3e  param name="op">
6e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6e90: 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f  nstraint operato
6ea0: 72 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53 51  r (<see cref="SQ
6eb0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
6ec0: 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20  intOp" />)...   
6ed0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6ef0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 75 73 61 62  param name="usab
6f00: 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
6f10: 2f 20 54 72 75 65 20 69 66 20 74 68 69 73 20 63  / True if this c
6f20: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73 61  onstraint is usa
6f30: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
6f40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6f50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6f60: 61 6d 65 3d 22 69 54 65 72 6d 4f 66 66 73 65 74  ame="iTermOffset
6f70: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
6f80: 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
6f90: 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  - <see cref="ISQ
6fa0: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
6fb0: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
6fc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f  .        /// sho
6fd0: 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20  uld ignore...   
6fe0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6ff0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
7000: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  te SQLiteIndexCo
7010: 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
7020: 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75         int iColu
7030: 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn,..           
7040: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
7050: 74 72 61 69 6e 74 4f 70 20 6f 70 2c 0d 0a 20 20  traintOp op,..  
7060: 20 20 20 20 20 20 20 20 20 20 62 79 74 65 20 75            byte u
7070: 73 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  sable,..        
7080: 20 20 20 20 69 6e 74 20 69 54 65 72 6d 4f 66 66      int iTermOff
7090: 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
70a0: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
70b0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
70c0: 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d  iColumn = iColum
70d0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
70e0: 74 68 69 73 2e 6f 70 20 3d 20 6f 70 3b 0d 0a 20  this.op = op;.. 
70f0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
7100: 75 73 61 62 6c 65 20 3d 20 75 73 61 62 6c 65 3b  usable = usable;
7110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
7120: 69 73 2e 69 54 65 72 6d 4f 66 66 73 65 74 20 3d  is.iTermOffset =
7130: 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
7140: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7150: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7160: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
71b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
71c0: 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d  n Public Fields.
71d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
71e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
71f0: 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65  /// Column on le
7200: 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ft-hand side of 
7210: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
7220: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7230: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
7240: 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
7250: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
72b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
72c0: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61       /// Constra
72d0: 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73  int operator (<s
72e0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
72f0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
7300: 22 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20  " />)...        
7310: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7320: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
7330: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7340: 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 0d 0a 20 20  aintOp op;....  
7350: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
73a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
73b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
73c0: 2f 2f 20 54 72 75 65 20 69 66 20 74 68 69 73 20  // True if this 
73d0: 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73  constraint is us
73e0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
73f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7400: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
7410: 74 65 20 75 73 61 62 6c 65 3b 0d 0a 0d 0a 20 20  te usable;....  
7420: 20 20 20 20 20 20 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
7470: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7480: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7490: 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c  // Used internal
74a0: 6c 79 20 2d 20 3c 73 65 65 20 63 72 65 66 3d 22  ly - <see cref="
74b0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
74c0: 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
74d0: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
74e0: 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a  should ignore...
74f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7510: 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d  public int iTerm
7520: 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
7530: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
7540: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
7550: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
7560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
75b0: 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78  gion SQLiteIndex
75c0: 4f 72 64 65 72 42 79 20 48 65 6c 70 65 72 20 43  OrderBy Helper C
75d0: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
75e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
75f0: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
7600: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76  esents the nativ
7610: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
7620: 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72  orderby structur
7630: 65 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20  e from..    /// 
7640: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
7650: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
7660: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7670: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
7680: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
7690: 78 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 7b 0d  xOrderBy..    {.
76a0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
76b0: 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72   Internal Constr
76c0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
76d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
76e0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
76f0: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
7700: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
7710: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
7720: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
7730: 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
7740: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74  index_orderby st
7750: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
7760: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7770: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
7780: 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 72 64 65 72  aram name="order
7790: 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  By">..        //
77a0: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c  / The native sql
77b0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
77c0: 62 79 20 73 74 72 75 63 74 75 72 65 20 74 6f 20  by structure to 
77d0: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
77e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
77f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
7800: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28  iteIndexOrderBy(
7810: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
7820: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7830: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
7840: 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42 79 0d  orderby orderBy.
7850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
7860: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
7870: 69 73 28 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75  is(orderBy.iColu
7880: 6d 6e 2c 20 6f 72 64 65 72 42 79 2e 64 65 73 63  mn, orderBy.desc
7890: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
78a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
78b0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
78c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
78d0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
78e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7930: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
7940: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
7950: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
7960: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7970: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
7980: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
7990: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
79a0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
79b0: 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ield..        //
79c0: 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  / values...     
79d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
79e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
79f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c  param name="iCol
7a00: 75 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  umn">..        /
7a10: 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72  // Column number
7a20: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7a30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
7a40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7a50: 3d 22 64 65 73 63 22 3e 0d 0a 20 20 20 20 20 20  ="desc">..      
7a60: 20 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20 44    /// True for D
7a70: 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20  ESC.  False for 
7a80: 41 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ASC...        //
7a90: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7aa0: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
7ab0: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 0d  teIndexOrderBy(.
7ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
7ad0: 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20   iColumn,..     
7ae0: 20 20 20 20 20 20 20 62 79 74 65 20 64 65 73 63         byte desc
7af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
7b00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
7b10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f          this.iCo
7b20: 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d  lumn = iColumn;.
7b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
7b40: 73 2e 64 65 73 63 20 3d 20 64 65 73 63 3b 0d 0a  s.desc = desc;..
7b50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7b60: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7b70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7bc0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
7bd0: 6f 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73  on Public Fields
7be0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7bf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7c00: 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62   /// Column numb
7c10: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
7c20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7c30: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
7c40: 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20  iColumn;....    
7c50: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7ca0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7cb0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7cc0: 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
7cd0: 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d   False for ASC..
7ce0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
7cf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7d00: 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
7d10: 63 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  c;..        #end
7d20: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
7d30: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7d40: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d90: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
7da0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
7db0: 72 61 69 6e 74 55 73 61 67 65 20 48 65 6c 70 65  raintUsage Helpe
7dc0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
7dd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7de0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
7df0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61  epresents the na
7e00: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
7e10: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
7e20: 61 67 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72  age..    /// str
7e30: 75 63 74 75 72 65 20 66 72 6f 6d 20 74 68 65 20  ucture from the 
7e40: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
7e50: 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
7e60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
7e70: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
7e80: 73 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  s SQLiteIndexCon
7e90: 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
7ea0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
7eb0: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
7ec0: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
7ed0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
7ef0: 6f 6e 73 74 72 75 63 74 73 20 61 20 64 65 66 61  onstructs a defa
7f00: 75 6c 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  ult instance of 
7f10: 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
7f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ry>..        int
7f40: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
7f50: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
7f60: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
7f70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
7f80: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
7f90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fe0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7ff0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
8010: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
8020: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
8030: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
8040: 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20  ified native..  
8050: 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
8060: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
8070: 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74 75  nt_usage structu
8080: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
8090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
80a0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
80b0: 6e 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74  name="constraint
80c0: 55 73 61 67 65 22 3e 0d 0a 20 20 20 20 20 20 20  Usage">..       
80d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
80e0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
80f0: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73  nstraint_usage s
8100: 74 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e  tructure to use.
8110: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8120: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
8130: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
8140: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
8150: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
8160: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
8170: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
8180: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
8190: 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
81a0: 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sage..          
81b0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
81c0: 20 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69   : this(constrai
81d0: 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65  ntUsage.argvInde
81e0: 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  x, constraintUsa
81f0: 67 65 2e 6f 6d 69 74 29 0d 0a 20 20 20 20 20 20  ge.omit)..      
8200: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8210: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
8220: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8230: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8240: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8290: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
82a0: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
82b0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
82c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
82d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
82e0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
82f0: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
8300: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
8310: 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20  ified field..   
8320: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e       /// values.
8330: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8350: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8360: 65 3d 22 61 72 67 76 49 6e 64 65 78 22 3e 0d 0a  e="argvIndex">..
8370: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67          /// If g
8380: 72 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63  reater than 0, c
8390: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
83a0: 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
83b0: 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lter...        /
83c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
83d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
83e0: 6e 61 6d 65 3d 22 6f 6d 69 74 22 3e 0d 0a 20 20  name="omit">..  
83f0: 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74        /// Do not
8400: 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72   code a test for
8410: 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
8420: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8430: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
8440: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
8450: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
8460: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
8470: 20 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 2c    int argvIndex,
8480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
8490: 74 65 20 6f 6d 69 74 0d 0a 20 20 20 20 20 20 20  te omit..       
84a0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
84b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
84c0: 68 69 73 2e 61 72 67 76 49 6e 64 65 78 20 3d 20  his.argvIndex = 
84d0: 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20  argvIndex;..    
84e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 6d 69          this.omi
84f0: 74 20 3d 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  t = omit;..     
8500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8510: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
8520: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8570: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
8580: 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20  ublic Fields..  
8590: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
85a0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
85b0: 20 49 66 20 67 72 65 61 74 65 72 20 74 68 61 6e   If greater than
85c0: 20 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69   0, constraint i
85d0: 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
85e0: 6f 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20  o xFilter...    
85f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8600: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8610: 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78  ic int argvIndex
8620: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8670: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8680: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8690: 20 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f         /// Do no
86a0: 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
86b0: 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
86c0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
86d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
86e0: 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
86f0: 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 23  omit;..        #
8700: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
8710: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
8720: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
8730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8770: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
8780: 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e  on SQLiteIndexIn
8790: 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61 73  puts Helper Clas
87a0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
87b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
87c0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
87d0: 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20  nts the various 
87e0: 69 6e 70 75 74 73 20 70 72 6f 76 69 64 65 64 20  inputs provided 
87f0: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
8800: 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72  re..    /// libr
8810: 61 72 79 20 74 6f 20 74 68 65 20 3c 73 65 65 20  ary to the <see 
8820: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
8830: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
8840: 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
8850: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8860: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
8870: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
8880: 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 0d  LiteIndexInputs.
8890: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
88a0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
88b0: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
88c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
88d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
88e0: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
88f0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
8900: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
8910: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8920: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
8930: 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74  ram name="nConst
8940: 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  raint">..       
8950: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
8960: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
8970: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
8980: 69 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  int" /> instance
8990: 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
89a0: 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73  / pre-allocate s
89b0: 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20  pace for...     
89c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
89d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
89e0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72  ram name="nOrder
89f0: 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  By">..        //
8a00: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
8a10: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
8a20: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f  eIndexOrderBy" /
8a30: 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a  > instances to..
8a40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d          /// pre-
8a50: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
8a60: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
8a70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8a80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
8a90: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 28 69 6e  teIndexInputs(in
8aa0: 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69  t nConstraint, i
8ab0: 6e 74 20 6e 4f 72 64 65 72 42 79 29 0d 0a 20 20  nt nOrderBy)..  
8ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8ad0: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73       constraints
8ae0: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8af0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 6e 43 6f  exConstraint[nCo
8b00: 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 20 20 20 20  nstraint];..    
8b10: 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
8b20: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8b30: 65 78 4f 72 64 65 72 42 79 5b 6e 4f 72 64 65 72  exOrderBy[nOrder
8b40: 42 79 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  By];..        }.
8b50: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
8b60: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
8bc0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
8bd0: 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
8be0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
8bf0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
8c00: 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73  nt[] constraints
8c10: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
8c20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8c30: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
8c40: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
8c50: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
8c60: 6e 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  nt" /> object in
8c70: 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20  stances,..      
8c80: 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61    /// each conta
8c90: 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f  ining informatio
8ca0: 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20 74 68  n supplied by th
8cb0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
8cc0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
8cd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8ce0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
8cf0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
8d00: 61 69 6e 74 5b 5d 20 43 6f 6e 73 74 72 61 69 6e  aint[] Constrain
8d10: 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ts..        {.. 
8d20: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
8d30: 20 72 65 74 75 72 6e 20 63 6f 6e 73 74 72 61 69   return constrai
8d40: 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  nts; }..        
8d50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
8d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8db0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
8dc0: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64  dexOrderBy[] ord
8dd0: 65 72 42 79 73 3b 0d 0a 20 20 20 20 20 20 20 20  erBys;..        
8de0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8df0: 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72         /// An ar
8e00: 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ray of <see cref
8e10: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  ="SQLiteIndexOrd
8e20: 65 72 42 79 22 20 2f 3e 20 6f 62 6a 65 63 74 20  erBy" /> object 
8e30: 69 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20  instances,..    
8e40: 20 20 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e      /// each con
8e50: 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74  taining informat
8e60: 69 6f 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20  ion supplied by 
8e70: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
8e80: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
8e90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8ea0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
8eb0: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
8ec0: 72 42 79 5b 5d 20 4f 72 64 65 72 42 79 73 0d 0a  rBy[] OrderBys..
8ed0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8ee0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
8ef0: 75 72 6e 20 6f 72 64 65 72 42 79 73 3b 20 7d 0d  urn orderBys; }.
8f00: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8f10: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8f20: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
8f30: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8f90: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
8fa0: 64 65 78 4f 75 74 70 75 74 73 20 48 65 6c 70 65  dexOutputs Helpe
8fb0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
8fc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8fd0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
8fe0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76 61  epresents the va
8ff0: 72 69 6f 75 73 20 6f 75 74 70 75 74 73 20 70 72  rious outputs pr
9000: 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
9010: 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f  Lite core..    /
9020: 2f 2f 20 6c 69 62 72 61 72 79 20 62 79 20 74 68  // library by th
9030: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
9040: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
9050: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  e.BestIndex" /> 
9060: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f  method...    ///
9070: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9080: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
9090: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
90a0: 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a  Outputs..    {..
90b0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
90c0: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
90d0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
90e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
90f0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
9100: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
9110: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
9120: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9130: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9140: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9150: 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d  ="nConstraint">.
9160: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
9170: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
9180: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
9190: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
91a0: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 0d 0a  " /> instances..
91b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 70          /// to p
91c0: 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63  re-allocate spac
91d0: 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  e for...        
91e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
91f0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
9200: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
9210: 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  s(int nConstrain
9220: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
9230: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
9240: 72 61 69 6e 74 55 73 61 67 65 73 20 3d 20 6e 65  raintUsages = ne
9250: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  w SQLiteIndexCon
9260: 73 74 72 61 69 6e 74 55 73 61 67 65 5b 6e 43 6f  straintUsage[nCo
9270: 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 0d 0a 20 20  nstraint];....  
9280: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9290: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
92a0: 46 49 58 3a 20 43 72 65 61 74 65 20 74 68 65 20  FIX: Create the 
92b0: 5b 65 6d 70 74 79 5d 20 63 6f 6e 73 74 72 61 69  [empty] constrai
92c0: 6e 74 20 75 73 61 67 65 73 20 6e 6f 77 20 73 6f  nt usages now so
92d0: 20 74 68 65 79 20 63 61 6e 20 62 65 0d 0a 20 20   they can be..  
92e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
92f0: 20 20 20 20 20 75 73 65 64 20 62 79 20 74 68 65       used by the
9300: 20 78 42 65 73 74 49 6e 64 65 78 20 63 61 6c 6c   xBestIndex call
9310: 62 61 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20  back...         
9320: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9330: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e     for (int iCon
9340: 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f  straint = 0; iCo
9350: 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73  nstraint < nCons
9360: 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61  traint; iConstra
9370: 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  int++)..        
9380: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
9390: 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72  ntUsages[iConstr
93a0: 61 69 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69  aint] = new SQLi
93b0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
93c0: 74 55 73 61 67 65 28 29 3b 0d 0a 20 20 20 20 20  tUsage();..     
93d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
93e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
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 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9450: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9460: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
9470: 74 68 65 20 6e 61 74 69 76 65 20 65 73 74 69 6d  the native estim
9480: 61 74 65 64 52 6f 77 73 20 66 69 65 6c 64 20 63  atedRows field c
9490: 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61 73 65  an be used, base
94a0: 64 20 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d on..        //
94b0: 2f 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  / the available 
94c0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
94d0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
94e0: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
94f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9500: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9510: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
9520: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
9530: 3c 73 65 65 20 63 72 65 66 3d 22 45 73 74 69 6d  <see cref="Estim
9540: 61 74 65 64 52 6f 77 73 22 20 2f 3e 20 70 72 6f  atedRows" /> pro
9550: 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74  perty is support
9560: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
9570: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
9580: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
9590: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
95a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
95b0: 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 45  lic bool CanUseE
95c0: 73 74 69 6d 61 74 65 64 52 6f 77 73 28 29 0d 0a  stimatedRows()..
95d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
95e0: 20 20 20 20 20 20 20 69 66 20 28 55 6e 73 61 66         if (Unsaf
95f0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
9600: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
9610: 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30  n_number() >= 30
9620: 30 38 30 30 32 29 0d 0a 20 20 20 20 20 20 20 20  08002)..        
9630: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
9640: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
9650: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
9660: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
9670: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
96c0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
96d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
96e0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
96f0: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 66   if the native f
9700: 6c 61 67 73 20 66 69 65 6c 64 20 63 61 6e 20 62  lags field can b
9710: 65 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e  e used, based on
9720: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
9730: 2f 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73  / available vers
9740: 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74  ion of the SQLit
9750: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
9760: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9770: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9780: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
9790: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
97a0: 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65  zero if the <see
97b0: 20 63 72 65 66 3d 22 49 6e 64 65 78 46 6c 61 67   cref="IndexFlag
97c0: 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 69  s" /> property i
97d0: 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 0d 0a  s supported by..
97e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
97f0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
9800: 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
9810: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9820: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
9830: 6c 20 43 61 6e 55 73 65 49 6e 64 65 78 46 6c 61  l CanUseIndexFla
9840: 67 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  gs()..        {.
9850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
9860: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
9870: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62  hods.sqlite3_lib
9880: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
9890: 20 3e 3d 20 33 30 30 39 30 30 30 29 0d 0a 20 20   >= 3009000)..  
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
98b0: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
98c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
98d0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
98e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9940: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9950: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
9960: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61  rmines if the na
9970: 74 69 76 65 20 66 6c 61 67 73 20 66 69 65 6c 64  tive flags field
9980: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61   can be used, ba
9990: 73 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  sed on the..    
99a0: 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c      /// availabl
99b0: 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  e version of the
99c0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
99d0: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
99e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
99f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
9a00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
9a10: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
9a20: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6c  e <see cref="Col
9a30: 75 6d 6e 73 55 73 65 64 22 20 2f 3e 20 70 72 6f  umnsUsed" /> pro
9a40: 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74  perty is support
9a50: 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  ed by..        /
9a60: 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  // the SQLite co
9a70: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
9a80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
9a90: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
9aa0: 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 43  lic bool CanUseC
9ab0: 6f 6c 75 6d 6e 73 55 73 65 64 28 29 0d 0a 20 20  olumnsUsed()..  
9ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9ad0: 20 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e       if (UnsafeN
9ae0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
9af0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
9b00: 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30 31 30  number() >= 3010
9b10: 30 30 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  000)..          
9b20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
9b30: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9b40: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
9b50: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9b60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9bb0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
9bc0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
9bd0: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
9be0: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ate SQLiteIndexC
9bf0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
9c00: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
9c10: 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s;..        /// 
9c20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9c30: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20     /// An array 
9c40: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
9c50: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
9c60: 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 6f 62 6a  intUsage" /> obj
9c70: 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
9c80: 20 69 6e 73 74 61 6e 63 65 73 2c 20 65 61 63 68   instances, each
9c90: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
9ca0: 72 6d 61 74 69 6f 6e 20 74 6f 20 62 65 20 73 75  rmation to be su
9cb0: 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 53 51  pplied to the SQ
9cc0: 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Lite..        //
9cd0: 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  / core library..
9ce0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9cf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9d00: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
9d10: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
9d20: 67 65 5b 5d 20 43 6f 6e 73 74 72 61 69 6e 74 55  ge[] ConstraintU
9d30: 73 61 67 65 73 0d 0a 20 20 20 20 20 20 20 20 7b  sages..        {
9d40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
9d50: 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73 74  t { return const
9d60: 72 61 69 6e 74 55 73 61 67 65 73 3b 20 7d 0d 0a  raintUsages; }..
9d70: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9d80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9dd0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
9de0: 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  int indexNumber;
9df0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9e00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9e10: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
9e20: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
9e30: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
9e40: 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75  ndex.  This valu
9e50: 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  e will..        
9e60: 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70 72 6f  /// later be pro
9e70: 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65  vided to the <se
9e80: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
9e90: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c  anagedModule.Fil
9ea0: 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ter" />..       
9eb0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
9ec0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9ed0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9ee0: 62 6c 69 63 20 69 6e 74 20 49 6e 64 65 78 4e 75  blic int IndexNu
9ef0: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
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 4e   { return indexN
9f20: 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20  umber; }..      
9f30: 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65        set { inde
9f40: 78 4e 75 6d 62 65 72 20 3d 20 76 61 6c 75 65 3b  xNumber = value;
9f50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9f60: 0a 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
9fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
9fc0: 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78  ate string index
9fd0: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20  String;..       
9fe0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9ff0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69          /// Stri
a000: 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  ng used to help 
a010: 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
a020: 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68  ected index.  Th
a030: 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20  is value will.. 
a040: 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72         /// later
a050: 20 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20   be provided to 
a060: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
a070: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
a080: 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a  ule.Filter" />..
a090: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
a0a0: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
a0b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a0c0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
a0d0: 6e 67 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a  ng IndexString..
a0e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a0f0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
a100: 75 72 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b  urn indexString;
a110: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
a120: 73 65 74 20 7b 20 69 6e 64 65 78 53 74 72 69 6e  set { indexStrin
a130: 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
a140: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a150: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
a1a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
a1b0: 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  t needToFreeInde
a1c0: 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  xString;..      
a1d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a1e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
a1f0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 69 6e 64  -zero if the ind
a200: 65 78 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62  ex string must b
a210: 65 20 66 72 65 65 64 20 62 79 20 74 68 65 20 53  e freed by the S
a220: 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
a230: 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e      /// library.
a240: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
a250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a260: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4e 65 65    public int Nee
a270: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
a280: 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
a290: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
a2a0: 20 72 65 74 75 72 6e 20 6e 65 65 64 54 6f 46 72   return needToFr
a2b0: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d  eeIndexString; }
a2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
a2d0: 74 20 7b 20 6e 65 65 64 54 6f 46 72 65 65 49 6e  t { needToFreeIn
a2e0: 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75  dexString = valu
a2f0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
a300: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a350: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
a360: 69 76 61 74 65 20 69 6e 74 20 6f 72 64 65 72 42  ivate int orderB
a370: 79 43 6f 6e 73 75 6d 65 64 3b 0d 0a 20 20 20 20  yConsumed;..    
a380: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a390: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
a3a0: 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73  rue if output is
a3b0: 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64   already ordered
a3c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
a3d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a3e0: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4f 72     public int Or
a3f0: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 0d 0a 20  derByConsumed.. 
a400: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a410: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
a420: 72 6e 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d  rn orderByConsum
a430: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ed; }..         
a440: 20 20 20 73 65 74 20 7b 20 6f 72 64 65 72 42 79     set { orderBy
a450: 43 6f 6e 73 75 6d 65 64 20 3d 20 76 61 6c 75 65  Consumed = value
a460: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
a470: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
a4d0: 76 61 74 65 20 64 6f 75 62 6c 65 3f 20 65 73 74  vate double? est
a4e0: 69 6d 61 74 65 64 43 6f 73 74 3b 0d 0a 20 20 20  imatedCost;..   
a4f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a500: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
a510: 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f  Estimated cost o
a520: 66 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64  f using this ind
a530: 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c  ex.  Using a nul
a540: 6c 20 76 61 6c 75 65 20 68 65 72 65 0d 0a 20 20  l value here..  
a550: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61        /// indica
a560: 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61 75  tes that a defau
a570: 6c 74 20 65 73 74 69 6d 61 74 65 64 20 63 6f 73  lt estimated cos
a580: 74 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  t value should b
a590: 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  e used...       
a5a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a5b0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
a5c0: 64 6f 75 62 6c 65 3f 20 45 73 74 69 6d 61 74 65  double? Estimate
a5d0: 64 43 6f 73 74 0d 0a 20 20 20 20 20 20 20 20 7b  dCost..        {
a5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
a5f0: 74 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d  t { return estim
a600: 61 74 65 64 43 6f 73 74 3b 20 7d 0d 0a 20 20 20  atedCost; }..   
a610: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 65           set { e
a620: 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 76  stimatedCost = v
a630: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
a640: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
a650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a690: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a6a0: 20 70 72 69 76 61 74 65 20 6c 6f 6e 67 3f 20 65   private long? e
a6b0: 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 0d 0a 20  stimatedRows;.. 
a6c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
a6d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
a6e0: 2f 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62  / Estimated numb
a6f0: 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72  er of rows retur
a700: 6e 65 64 2e 20 20 55 73 69 6e 67 20 61 20 6e 75  ned.  Using a nu
a710: 6c 6c 20 76 61 6c 75 65 20 68 65 72 65 0d 0a 20  ll value here.. 
a720: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63         /// indic
a730: 61 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61  ates that a defa
a740: 75 6c 74 20 65 73 74 69 6d 61 74 65 64 20 72 6f  ult estimated ro
a750: 77 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20  ws value should 
a760: 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  be used...      
a770: 20 20 2f 2f 2f 20 54 68 69 73 20 70 72 6f 70 65    /// This prope
a780: 72 74 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63  rty has no effec
a790: 74 20 69 66 20 74 68 65 20 53 51 4c 69 74 65 20  t if the SQLite 
a7a0: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
a7b0: 6e 6f 74 20 61 74 0d 0a 20 20 20 20 20 20 20 20  not at..        
a7c0: 2f 2f 2f 20 6c 65 61 73 74 20 76 65 72 73 69 6f  /// least versio
a7d0: 6e 20 33 2e 38 2e 32 2e 0d 0a 20 20 20 20 20 20  n 3.8.2...      
a7e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a7f0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
a800: 20 6c 6f 6e 67 3f 20 45 73 74 69 6d 61 74 65 64   long? Estimated
a810: 52 6f 77 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Rows..        {.
a820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
a830: 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d 61   { return estima
a840: 74 65 64 52 6f 77 73 3b 20 7d 0d 0a 20 20 20 20  tedRows; }..    
a850: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 65 73          set { es
a860: 74 69 6d 61 74 65 64 52 6f 77 73 20 3d 20 76 61  timatedRows = va
a870: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
a880: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a8e0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
a8f0: 64 65 78 46 6c 61 67 73 3f 20 69 6e 64 65 78 46  dexFlags? indexF
a900: 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lags;..        /
a910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a920: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
a930: 61 67 73 20 74 68 61 74 20 73 68 6f 75 6c 64 20  ags that should 
a940: 62 65 20 75 73 65 64 20 77 69 74 68 20 74 68 69  be used with thi
a950: 73 20 69 6e 64 65 78 2e 20 20 55 73 69 6e 67 20  s index.  Using 
a960: 61 20 6e 75 6c 6c 20 76 61 6c 75 65 0d 0a 20 20  a null value..  
a970: 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 20 69        /// here i
a980: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20  ndicates that a 
a990: 64 65 66 61 75 6c 74 20 66 6c 61 67 73 20 76 61  default flags va
a9a0: 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73  lue should be us
a9b0: 65 64 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 20  ed.  This..     
a9c0: 20 20 20 2f 2f 2f 20 70 72 6f 70 65 72 74 79 20     /// property 
a9d0: 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 66  has no effect if
a9e0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
a9f0: 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20   library is not 
aa00: 61 74 20 6c 65 61 73 74 0d 0a 20 20 20 20 20 20  at least..      
aa10: 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 33 2e    /// version 3.
aa20: 39 2e 30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  9.0...        //
aa30: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
aa40: 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
aa50: 69 74 65 49 6e 64 65 78 46 6c 61 67 73 3f 20 49  iteIndexFlags? I
aa60: 6e 64 65 78 46 6c 61 67 73 0d 0a 20 20 20 20 20  ndexFlags..     
aa70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
aa80: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69    get { return i
aa90: 6e 64 65 78 46 6c 61 67 73 3b 20 7d 0d 0a 20 20  ndexFlags; }..  
aaa0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
aab0: 69 6e 64 65 78 46 6c 61 67 73 20 3d 20 76 61 6c  indexFlags = val
aac0: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
aad0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
aae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab20: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
ab30: 72 69 76 61 74 65 20 6c 6f 6e 67 3f 20 63 6f 6c  rivate long? col
ab40: 75 6d 6e 73 55 73 65 64 3b 0d 0a 20 20 20 20 20  umnsUsed;..     
ab50: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ab60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ab70: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
ab80: 2f 20 49 6e 64 69 63 61 74 65 73 20 77 68 69 63  / Indicates whic
ab90: 68 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65  h columns of the
aba0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
abb0: 61 79 20 62 65 20 72 65 71 75 69 72 65 64 20 62  ay be required b
abc0: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
abd0: 2f 2f 20 63 75 72 72 65 6e 74 20 73 63 61 6e 2e  // current scan.
abe0: 20 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20    Virtual table 
abf0: 63 6f 6c 75 6d 6e 73 20 61 72 65 20 6e 75 6d 62  columns are numb
ac00: 65 72 65 64 20 66 72 6f 6d 20 7a 65 72 6f 20 69  ered from zero i
ac10: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
ac20: 2f 2f 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63  // order in whic
ac30: 68 20 74 68 65 79 20 61 70 70 65 61 72 20 77 69  h they appear wi
ac40: 74 68 69 6e 20 74 68 65 20 43 52 45 41 54 45 20  thin the CREATE 
ac50: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
ac60: 70 61 73 73 65 64 0d 0a 20 20 20 20 20 20 20 20  passed..        
ac70: 2f 2f 2f 20 74 6f 20 73 71 6c 69 74 65 33 5f 64  /// to sqlite3_d
ac80: 65 63 6c 61 72 65 5f 76 74 61 62 28 29 2e 20 20  eclare_vtab().  
ac90: 46 6f 72 20 74 68 65 20 66 69 72 73 74 20 36 33  For the first 63
aca0: 20 63 6f 6c 75 6d 6e 73 20 28 63 6f 6c 75 6d 6e   columns (column
acb0: 73 20 30 2d 36 32 29 2c 0d 0a 20 20 20 20 20 20  s 0-62),..      
acc0: 20 20 2f 2f 2f 20 74 68 65 20 63 6f 72 72 65 73    /// the corres
acd0: 70 6f 6e 64 69 6e 67 20 62 69 74 20 69 73 20 73  ponding bit is s
ace0: 65 74 20 77 69 74 68 69 6e 20 74 68 65 20 62 69  et within the bi
acf0: 74 20 6d 61 73 6b 20 69 66 20 74 68 65 20 63 6f  t mask if the co
ad00: 6c 75 6d 6e 20 6d 61 79 0d 0a 20 20 20 20 20 20  lumn may..      
ad10: 20 20 2f 2f 2f 20 62 65 20 72 65 71 75 69 72 65    /// be require
ad20: 64 20 62 79 20 53 51 4c 69 74 65 2e 20 20 49 66  d by SQLite.  If
ad30: 20 74 68 65 20 74 61 62 6c 65 20 68 61 73 20 61   the table has a
ad40: 74 20 6c 65 61 73 74 20 36 34 20 63 6f 6c 75 6d  t least 64 colum
ad50: 6e 73 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  ns and..        
ad60: 2f 2f 2f 20 61 6e 79 20 63 6f 6c 75 6d 6e 20 74  /// any column t
ad70: 6f 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 74  o the right of t
ad80: 68 65 20 66 69 72 73 74 20 36 33 20 69 73 20 72  he first 63 is r
ad90: 65 71 75 69 72 65 64 2c 20 74 68 65 6e 20 62 69  equired, then bi
ada0: 74 20 36 33 20 6f 66 0d 0a 20 20 20 20 20 20 20  t 63 of..       
adb0: 20 2f 2f 2f 20 63 6f 6c 55 73 65 64 20 69 73 20   /// colUsed is 
adc0: 61 6c 73 6f 20 73 65 74 2e 20 20 49 6e 20 6f 74  also set.  In ot
add0: 68 65 72 20 77 6f 72 64 73 2c 20 63 6f 6c 75 6d  her words, colum
ade0: 6e 20 69 43 6f 6c 20 6d 61 79 20 62 65 20 72 65  n iCol may be re
adf0: 71 75 69 72 65 64 0d 0a 20 20 20 20 20 20 20 20  quired..        
ae00: 2f 2f 2f 20 69 66 20 74 68 65 20 65 78 70 72 65  /// if the expre
ae10: 73 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ssion..        /
ae20: 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
ae30: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 3c 63      /// <para><c
ae40: 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
ae50: 2f 20 28 63 6f 6c 55 73 65 64 20 26 61 6d 70 3b  / (colUsed &amp;
ae60: 20 28 28 73 71 6c 69 74 65 33 5f 75 69 6e 74 36   ((sqlite3_uint6
ae70: 34 29 31 20 26 6c 74 3b 26 6c 74 3b 20 28 69 43  4)1 &lt;&lt; (iC
ae80: 6f 6c 26 67 74 3b 3d 36 33 20 3f 20 36 33 20 3a  ol&gt;=63 ? 63 :
ae90: 20 69 43 6f 6c 29 29 29 0d 0a 20 20 20 20 20 20   iCol)))..      
aea0: 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 3c 2f 70    /// </code></p
aeb0: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
aec0: 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
aed0: 20 20 2f 2f 2f 20 65 76 61 6c 75 61 74 65 73 20    /// evaluates 
aee0: 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e 20 20 55 73  to non-zero.  Us
aef0: 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  ing a null value
af00: 20 68 65 72 65 20 69 6e 64 69 63 61 74 65 73 20   here indicates 
af10: 74 68 61 74 20 61 0d 0a 20 20 20 20 20 20 20 20  that a..        
af20: 2f 2f 2f 20 64 65 66 61 75 6c 74 20 66 6c 61 67  /// default flag
af30: 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  s value should b
af40: 65 20 75 73 65 64 2e 20 20 54 68 69 73 20 70 72  e used.  This pr
af50: 6f 70 65 72 74 79 20 68 61 73 20 6e 6f 20 65 66  operty has no ef
af60: 66 65 63 74 20 69 66 0d 0a 20 20 20 20 20 20 20  fect if..       
af70: 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20   /// the SQLite 
af80: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
af90: 6e 6f 74 20 61 74 20 6c 65 61 73 74 20 76 65 72  not at least ver
afa0: 73 69 6f 6e 20 33 2e 31 30 2e 30 2e 0d 0a 20 20  sion 3.10.0...  
afb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
afc0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
afd0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
afe0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 3f 20     public long? 
aff0: 43 6f 6c 75 6d 6e 73 55 73 65 64 0d 0a 20 20 20  ColumnsUsed..   
b000: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b010: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
b020: 20 63 6f 6c 75 6d 6e 73 55 73 65 64 3b 20 7d 0d   columnsUsed; }.
b030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
b040: 20 7b 20 63 6f 6c 75 6d 6e 73 55 73 65 64 20 3d   { columnsUsed =
b050: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
b060: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
b070: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
b080: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
b090: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
b0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
b0f0: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 20 48 65  n SQLiteIndex He
b100: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
b110: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b120: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
b130: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
b140: 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20   various inputs 
b150: 61 6e 64 20 6f 75 74 70 75 74 73 20 75 73 65 64  and outputs used
b160: 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f   with the..    /
b170: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
b180: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
b190: 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
b1a0: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
b1b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b1c0: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
b1d0: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
b1e0: 78 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  x..    {..      
b1f0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
b200: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
b210: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
b220: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b230: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
b240: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
b250: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
b260: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
b280: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e  param name="nCon
b290: 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20  straint">..     
b2a0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
b2b0: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
b2c0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
b2d0: 72 61 69 6e 74 22 20 2f 3e 20 28 61 6e 64 0d 0a  raint" /> (and..
b2e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
b2f0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
b300: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
b310: 65 22 20 2f 3e 29 20 69 6e 73 74 61 6e 63 65 73  e" />) instances
b320: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
b330: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
b340: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
b350: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b360: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b370: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
b380: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
b390: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
b3a0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b3b0: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
b3c0: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
b3d0: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
b3e0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
b3f0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
b400: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b410: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
b420: 65 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  eIndex(..       
b430: 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72       int nConstr
b440: 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  aint,..         
b450: 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d     int nOrderBy.
b460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
b470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b480: 20 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20         inputs = 
b490: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 49  new SQLiteIndexI
b4a0: 6e 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e  nputs(nConstrain
b4b0: 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20  t, nOrderBy);.. 
b4c0: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
b4d0: 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  ts = new SQLiteI
b4e0: 6e 64 65 78 4f 75 74 70 75 74 73 28 6e 43 6f 6e  ndexOutputs(nCon
b4f0: 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20  straint);..     
b500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
b510: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b520: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
b530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b570: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
b580: 72 69 76 61 74 65 20 4d 61 72 73 68 61 6c 20 48  rivate Marshal H
b590: 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 20 28 46  elper Methods (F
b5a0: 6f 72 20 54 65 73 74 20 55 73 65 20 4f 6e 6c 79  or Test Use Only
b5b0: 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  )..        /// <
b5c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b5d0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
b5e0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
b5f0: 73 74 72 75 63 74 75 72 65 20 73 69 7a 65 73 20  structure sizes 
b600: 6e 65 65 64 65 64 20 74 6f 20 63 72 65 61 74 65  needed to create
b610: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
b620: 2f 20 70 6f 70 75 6c 61 74 65 20 61 20 6e 61 74  / populate a nat
b630: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
b640: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
b650: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b660: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
b670: 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  fo" />..        
b680: 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
b690: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
b6a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b6b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
b6c0: 22 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 22  "sizeOfInfoType"
b6d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
b6e0: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e  he size of the n
b6f0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
b700: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
b710: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
b720: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
b730: 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20  info" />..      
b740: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
b750: 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d  is stored here..
b760: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b770: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b780: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b790: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b7a0: 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  Type">..        
b7b0: 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20  /// The size of 
b7c0: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
b7d0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
b7e0: 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
b7f0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
b800: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 22  ndex_constraint"
b810: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
b820: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74   structure is st
b830: 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20  ored here...    
b840: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b850: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
b860: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
b870: 66 4f 72 64 65 72 42 79 54 79 70 65 22 3e 0d 0a  fOrderByType">..
b880: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
b890: 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69  size of the nati
b8a0: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
b8b0: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
b8c0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b8d0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
b8e0: 65 72 62 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20  erby" />..      
b8f0: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
b900: 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d  is stored here..
b910: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b920: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b930: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b940: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b950: 55 73 61 67 65 54 79 70 65 22 3e 0d 0a 20 20 20  UsageType">..   
b960: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
b970: 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
b980: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
b990: 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
b9a0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
b9b0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
b9c0: 61 69 6e 74 5f 75 73 61 67 65 22 20 2f 3e 0d 0a  aint_usage" />..
b9d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
b9e0: 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20  cture is stored 
b9f0: 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  here...        /
ba00: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ba10: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
ba20: 74 69 63 20 76 6f 69 64 20 53 69 7a 65 4f 66 4e  tic void SizeOfN
ba30: 61 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20  ative(..        
ba40: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
ba50: 4f 66 49 6e 66 6f 54 79 70 65 2c 0d 0a 20 20 20  OfInfoType,..   
ba60: 20 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74           out int
ba70: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
ba80: 74 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20  tType,..        
ba90: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
baa0: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 2c 0d 0a  OfOrderByType,..
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 20              out 
bac0: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
bad0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 0d 0a 20  aintUsageType.. 
bae0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
baf0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bb00: 20 20 20 20 20 73 69 7a 65 4f 66 49 6e 66 6f 54       sizeOfInfoT
bb10: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
bb20: 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
bb40: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
bb50: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
bb60: 69 6e 66 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  info));....     
bb70: 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e         sizeOfCon
bb80: 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61  straintType = Ma
bb90: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
bba0: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
bbb0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
bbc0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
bbd0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
bbe0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
bbf0: 20 20 20 20 20 73 69 7a 65 4f 66 4f 72 64 65 72       sizeOfOrder
bc00: 42 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ByType = Marshal
bc10: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
bc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bc30: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
bc40: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
bc50: 65 78 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d  ex_orderby));...
bc60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a  .            siz
bc70: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
bc80: 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  geType = Marshal
bc90: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
bca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bcb0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
bcc0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
bcd0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
bce0: 61 67 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  age));..        
bcf0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
bd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
bd50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bd60: 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
bd70: 70 74 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  pts to allocate 
bd80: 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 61  and initialize a
bd90: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
bda0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
bdb0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
bdc0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
bdd0: 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20  x_info" />..    
bde0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
bdf0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
be00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
be10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
be20: 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74  ame="nConstraint
be30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
be40: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73  The number of <s
be50: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
be60: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20  ndexConstraint" 
be70: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
be80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
be90: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
bea0: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
beb0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
bec0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
bed0: 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d  ame="nOrderBy">.
bee0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
bef0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
bf00: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
bf10: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73  xOrderBy" /> ins
bf20: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
bf30: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
bf40: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
bf50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
bf60: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
bf70: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
bf80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
bf90: 6c 79 20 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74  ly allocated nat
bfa0: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
bfb0: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
bfc0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
bfd0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
bfe0: 66 6f 22 20 2f 3e 20 73 74 72 75 63 74 75 72 65  fo" /> structure
bff0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2d 4f  ..        /// -O
c000: 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  R- <see cref="In
c010: 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
c020: 20 69 74 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65   it could not be
c030: 20 66 75 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64   fully allocated
c040: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c050: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
c060: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c070: 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74  c IntPtr Allocat
c080: 65 41 6e 64 49 6e 69 74 69 61 6c 69 7a 65 4e 61  eAndInitializeNa
c090: 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20 20  tive(..         
c0a0: 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69     int nConstrai
c0b0: 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt,..           
c0c0: 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20   int nOrderBy.. 
c0d0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
c0e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c0f0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
c100: 65 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ex = IntPtr.Zero
c110: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ;..            I
c120: 6e 74 50 74 72 20 70 49 6e 66 6f 20 3d 20 49 6e  ntPtr pInfo = In
c130: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
c140: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
c150: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e 74  Constraint = Int
c160: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
c170: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f         IntPtr pO
c180: 72 64 65 72 42 79 20 3d 20 49 6e 74 50 74 72 2e  rderBy = IntPtr.
c190: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c1a0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
c1b0: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74  raintUsage = Int
c1c0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
c1d0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
c1e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
c200: 20 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 3b   sizeOfInfoType;
c210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c220: 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65    int sizeOfOrde
c230: 72 42 79 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  rByType;..      
c240: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
c250: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
c260: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
c270: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
c280: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
c290: 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  pe;....         
c2a0: 20 20 20 20 20 20 20 53 69 7a 65 4f 66 4e 61 74         SizeOfNat
c2b0: 69 76 65 28 6f 75 74 20 73 69 7a 65 4f 66 49 6e  ive(out sizeOfIn
c2c0: 66 6f 54 79 70 65 2c 20 6f 75 74 20 73 69 7a 65  foType, out size
c2d0: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  OfConstraintType
c2e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
c2f0: 20 20 20 20 20 20 20 6f 75 74 20 73 69 7a 65 4f         out sizeO
c300: 66 4f 72 64 65 72 42 79 54 79 70 65 2c 20 6f 75  fOrderByType, ou
c310: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
c320: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
c330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c340: 20 69 66 20 28 28 73 69 7a 65 4f 66 49 6e 66 6f   if ((sizeOfInfo
c350: 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20  Type > 0) &&..  
c360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c370: 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61    (sizeOfConstra
c380: 69 6e 74 54 79 70 65 20 3e 20 30 29 20 26 26 0d  intType > 0) &&.
c390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3a0: 20 20 20 20 20 28 73 69 7a 65 4f 66 4f 72 64 65       (sizeOfOrde
c3b0: 72 42 79 54 79 70 65 20 3e 20 30 29 20 26 26 0d  rByType > 0) &&.
c3c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3d0: 20 20 20 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73       (sizeOfCons
c3e0: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
c3f0: 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  > 0))..         
c400: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c420: 6e 66 6f 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  nfo = SQLiteMemo
c430: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65  ry.Allocate(size
c440: 4f 66 49 6e 66 6f 54 79 70 65 29 3b 0d 0a 0d 0a  OfInfoType);....
c450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c460: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20      pConstraint 
c470: 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
c480: 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20  llocate(..      
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4a0: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
c4b0: 6e 74 54 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72  ntType * nConstr
c4c0: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f                pO
c4e0: 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d  rderBy = SQLiteM
c4f0: 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d  emory.Allocate(.
c500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c510: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f           sizeOfO
c520: 72 64 65 72 42 79 54 79 70 65 20 2a 20 6e 4f 72  rderByType * nOr
c530: 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  derBy);....     
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
c550: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
c560: 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
c570: 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20  llocate(..      
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
c5a0: 6e 74 55 73 61 67 65 54 79 70 65 20 2a 20 6e 43  ntUsageType * nC
c5b0: 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20  onstraint);.... 
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 69 66 20 28 28 70 49 6e 66 6f 20 21 3d     if ((pInfo !=
c5e0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26   IntPtr.Zero) &&
c5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c600: 20 20 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73            (pCons
c610: 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72  traint != IntPtr
c620: 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20 20 20  .Zero) &&..     
c630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c640: 20 20 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20     (pOrderBy != 
c650: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d  IntPtr.Zero) &&.
c660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c670: 20 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74           (pConst
c680: 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 49 6e  raintUsage != In
c690: 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c6c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
c6d0: 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6f0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
c700: 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
c710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c730: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 6e 43 6f  nfo, offset, nCo
c740: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
c750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c760: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c770: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c780: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7a0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c7b0: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
c7c0: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
c7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7e0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c7f0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
c800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c820: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f  nfo, offset, pCo
c830: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
c840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c850: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c860: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c870: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c890: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c8a0: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a  IntPtr.Size, siz
c8b0: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8d0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c8e0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 0d  hal.WriteInt32(.
c8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
c910: 66 6f 2c 20 6f 66 66 73 65 74 2c 20 6e 4f 72 64  fo, offset, nOrd
c920: 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBy);....      
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c940: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
c950: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
c960: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
c970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c980: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
c990: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
c9a0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9c0: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
c9d0: 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20  WriteIntPtr(..  
c9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9f0: 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c            pInfo,
ca00: 20 6f 66 66 73 65 74 2c 20 70 4f 72 64 65 72 42   offset, pOrderB
ca10: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
ca30: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
ca40: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
ca50: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca70: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
ca80: 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a  Size, IntPtr.Siz
ca90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
cab0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
cac0: 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  teIntPtr(..     
cad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cae0: 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66         pInfo, of
caf0: 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e  fset, pConstrain
cb00: 74 55 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  tUsage);....    
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb20: 20 20 20 20 70 49 6e 64 65 78 20 3d 20 70 49 6e      pIndex = pIn
cb30: 66 6f 3b 20 2f 2a 20 4e 4f 54 45 3a 20 53 75 63  fo; /* NOTE: Suc
cb40: 63 65 73 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  cess. */..      
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
cb60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
cb80: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
cb90: 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
cba0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cbb0: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
cbc0: 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x == IntPtr.Zero
cbd0: 29 20 2f 2a 20 4e 4f 54 45 3a 20 46 61 69 6c 75  ) /* NOTE: Failu
cbe0: 72 65 3f 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  re? */..        
cbf0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
cc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cc10: 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73  f (pConstraintUs
cc20: 61 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  age != IntPtr.Ze
cc30: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
cc40: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc60: 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
cc70: 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e  .Free(pConstrain
cc80: 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20  tUsage);..      
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61    pConstraintUsa
ccb0: 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ge = IntPtr.Zero
ccc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ccd0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 69 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20  if (pOrderBy != 
cd00: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
cd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
cd40: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
cd50: 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  OrderBy);..     
cd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd70: 20 20 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e     pOrderBy = In
cd80: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cda0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
cdb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
cdc0: 6e 73 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50  nstraint != IntP
cdd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
cdf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ce00: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
ce10: 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73  emory.Free(pCons
ce20: 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
ce30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce40: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20    pConstraint = 
ce50: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ce80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
ce90: 49 6e 66 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a  Info != IntPtr.Z
cea0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
ceb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ced0: 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
cee0: 79 2e 46 72 65 65 28 70 49 6e 66 6f 29 3b 0d 0a  y.Free(pInfo);..
cef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf00: 20 20 20 20 20 20 20 20 70 49 6e 66 6f 20 3d 20          pInfo = 
cf10: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
cf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf30: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cf40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
cf50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
cf60: 20 20 20 20 20 72 65 74 75 72 6e 20 70 49 6e 64       return pInd
cf70: 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ex;..        }..
cf80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
cf90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfd0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
cfe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
cff0: 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 6c      /// Frees al
d000: 6c 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 73 73  l the memory ass
d010: 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20 6e  ociated with a n
d020: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
d030: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
d040: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
d050: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
d060: 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20  info" />..      
d070: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
d080: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
d090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d0a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d0b0: 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20  e="pIndex">..   
d0c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
d0d0: 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
d0e0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
d0f0: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72  3_index_info str
d100: 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20  ucture to..     
d110: 20 20 20 2f 2f 2f 20 66 72 65 65 2e 0d 0a 20 20     /// free...  
d120: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
d130: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
d140: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
d150: 46 72 65 65 4e 61 74 69 76 65 28 0d 0a 20 20 20  FreeNative(..   
d160: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
d170: 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  pIndex..        
d180: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
d190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d1a0: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
d1b0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d1c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d1d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d1e0: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
d1f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d200: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
d210: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
d220: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
d230: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
d240: 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74  zeof(int), IntPt
d250: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
d260: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
d270: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c  Constraint = SQL
d280: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
d290: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d2a0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
d2b0: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
d2c0: 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 6e 73          int cons
d2d0: 74 72 61 69 6e 74 4f 66 66 73 65 74 20 3d 20 6f  traintOffset = o
d2e0: 66 66 73 65 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  ffset;....      
d2f0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
d300: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
d310: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
d320: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d330: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
d340: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
d350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
d360: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
d370: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d380: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d390: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
d3a0: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
d3b0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d3c0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72        IntPtr pOr
d3d0: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61  derBy = SQLiteMa
d3e0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
d3f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d400: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
d410: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
d420: 20 20 20 69 6e 74 20 6f 72 64 65 72 42 79 4f 66     int orderByOf
d430: 66 73 65 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a  fset = offset;..
d440: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
d450: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
d460: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d470: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d480: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
d490: 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e  tr.Size, IntPtr.
d4a0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d4b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
d4c0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
d4d0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
d4e0: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
d4f0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d500: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
d510: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
d520: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 4f 66  onstraintUsageOf
d530: 66 73 65 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a  fset = offset;..
d540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d550: 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61   (pConstraintUsa
d560: 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ge != IntPtr.Zer
d570: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
d580: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d590: 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
d5a0: 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74  Free(pConstraint
d5b0: 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20  Usage);..       
d5c0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72           pConstr
d5d0: 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50  aintUsage = IntP
d5e0: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
d5f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
d600: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
d610: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d620: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
d630: 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  ex, constraintUs
d640: 61 67 65 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73  ageOffset, pCons
d650: 74 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20  traintUsage);.. 
d660: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
d670: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d680: 70 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74 50  pOrderBy != IntP
d690: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d6a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d6b0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
d6c0: 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 72 64 65  emory.Free(pOrde
d6d0: 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rBy);..         
d6e0: 20 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 20         pOrderBy 
d6f0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
d700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d710: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
d720: 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20  WriteIntPtr(..  
d730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d740: 20 20 70 49 6e 64 65 78 2c 20 6f 72 64 65 72 42    pIndex, orderB
d750: 79 4f 66 66 73 65 74 2c 20 70 4f 72 64 65 72 42  yOffset, pOrderB
d760: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
d770: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
d780: 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e    if (pConstrain
d790: 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t != IntPtr.Zero
d7a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7c0: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
d7d0: 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 29  ree(pConstraint)
d7e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
d7f0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d     pConstraint =
d800: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
d810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d820: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
d830: 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20  riteIntPtr(..   
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d850: 20 70 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61   pIndex, constra
d860: 69 6e 74 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73  intOffset, pCons
d870: 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
d880: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d890: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
d8a0: 78 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x != IntPtr.Zero
d8b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d8d0: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
d8e0: 72 65 65 28 70 49 6e 64 65 78 29 3b 0d 0a 20 20  ree(pIndex);..  
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
d900: 6e 64 65 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ndex = IntPtr.Ze
d910: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
d920: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
d930: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
d940: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
d950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d990: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
d9a0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
d9b0: 20 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72 20   Marshal Helper 
d9c0: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
d9d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d9e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
d9f0: 65 72 74 73 20 61 20 6e 61 74 69 76 65 20 70 6f  erts a native po
da00: 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76  inter to a nativ
da10: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
da20: 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 0d 0a  info structure..
da30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f          /// into
da40: 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66   a new <see cref
da50: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
da60: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
da70: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
da80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
da90: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
daa0: 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20  ame="pIndex">.. 
dab0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
dac0: 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
dad0: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
dae0: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
daf0: 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20  tructure to..   
db00: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74       /// convert
db10: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
db20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
db30: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
db40: 3d 22 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 22  ="includeOutput"
db50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
db60: 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69 6e 63 6c 75  on-zero to inclu
db70: 64 65 20 66 69 65 6c 64 73 20 66 72 6f 6d 20 74  de fields from t
db80: 68 65 20 6f 75 74 70 75 74 73 20 70 6f 72 74 69  he outputs porti
db90: 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  on of the native
dba0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
dbb0: 72 75 63 74 75 72 65 3b 20 6f 74 68 65 72 77 69  ructure; otherwi
dbc0: 73 65 2c 20 74 68 65 20 22 6f 75 74 70 75 74 22  se, the "output"
dbd0: 20 66 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74   fields will not
dbe0: 20 62 65 20 72 65 61 64 2e 0d 0a 20 20 20 20 20   be read...     
dbf0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
dc00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
dc10: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
dc20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
dc30: 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
dc40: 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
dc50: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
dc60: 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 65 77 6c  contain the newl
dc70: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  y..        /// c
dc80: 72 65 61 74 65 64 20 3c 73 65 65 20 63 72 65 66  reated <see cref
dc90: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
dca0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
dcb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
dcc0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
dcd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dce0: 63 20 76 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74  c void FromIntPt
dcf0: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
dd00: 49 6e 74 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a  IntPtr pIndex,..
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
dd20: 20 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 2c 0d   includeOutput,.
dd30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
dd40: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
dd50: 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
dd60: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
dd70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49            if (pI
dd80: 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndex == IntPtr.Z
dd90: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
dda0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
ddb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
ddc0: 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a   offset = 0;....
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
dde0: 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51  nConstraint = SQ
ddf0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
de00: 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
de10: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
de20: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
de30: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
de40: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
de50: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
de60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
de70: 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
de80: 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  ), IntPtr.Size);
de90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dea0: 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
deb0: 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  nt = SQLiteMarsh
dec0: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  al.ReadIntPtr(..
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dee0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
def0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
df00: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
df10: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
df20: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
df30: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
df40: 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f  tPtr.Size, sizeo
df50: 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
df60: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64          int nOrd
df70: 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72  erBy = SQLiteMar
df80: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
df90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfa0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
dfb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
dfc0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
dfd0: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
dfe0: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
dff0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
e000: 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50  izeof(int), IntP
e010: 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
e020: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
e030: 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  pOrderBy = SQLit
e040: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
e050: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
e060: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
e070: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
e080: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
e090: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
e0a0: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e0c0: 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a  includeOutput)..
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e0f0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
e100: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
e110: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
e120: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
e130: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e   IntPtr.Size, In
e140: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
e160: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
e170: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e180: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
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 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
e1c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e1d0: 69 6e 64 65 78 20 3d 20 6e 65 77 20 53 51 4c 69  index = new SQLi
e1e0: 74 65 49 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61  teIndex(nConstra
e1f0: 69 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d  int, nOrderBy);.
e200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
e210: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 69  iteIndexInputs i
e220: 6e 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e  nputs = index.In
e230: 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  puts;....       
e240: 20 20 20 20 20 69 66 20 28 69 6e 70 75 74 73 20       if (inputs 
e250: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
e260: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e270: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e280: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
e290: 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61  traint[] constra
e2a0: 69 6e 74 73 20 3d 20 69 6e 70 75 74 73 2e 43 6f  ints = inputs.Co
e2b0: 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 0d 0a 20 20  nstraints;....  
e2c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
e2d0: 6e 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c  nstraints == nul
e2e0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e2f0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
e300: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e310: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
e320: 6f 72 64 65 72 42 79 73 20 3d 20 69 6e 70 75 74  orderBys = input
e330: 73 2e 4f 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20  s.OrderBys;.... 
e340: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
e350: 72 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29  rderBys == null)
e360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e370: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
e380: 20 20 20 20 20 20 20 20 20 54 79 70 65 20 63 6f           Type co
e390: 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 74  nstraintType = t
e3a0: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
e3b0: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
e3c0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
e3d0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
e3e0: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
e3f0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
e400: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d  ConstraintType =
e410: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e430: 20 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65    constraintType
e440: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e450: 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73    for (int iCons
e460: 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e  traint = 0; iCon
e470: 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74  straint < nConst
e480: 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69  raint; iConstrai
e490: 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20  nt++)..         
e4a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e4b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66        IntPtr pOf
e4c0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e4d0: 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66  shal.IntPtrForOf
e4e0: 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  fset(..         
e4f0: 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73             pCons
e500: 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61  traint, iConstra
e510: 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73  int * sizeOfCons
e520: 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a  traintType);....
e530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e540: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
e550: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
e560: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  x_constraint con
e570: 73 74 72 61 69 6e 74 20 3d 0d 0a 20 20 20 20 20  straint =..     
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
e590: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
e5a0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
e5b0: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20  x_constraint).. 
e5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5d0: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50         Marshal.P
e5e0: 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f  trToStructure(pO
e5f0: 66 66 73 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e  ffset, constrain
e600: 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  tType);....     
e610: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
e620: 72 61 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69  raints[iConstrai
e630: 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  nt] = new SQLite
e640: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28  IndexConstraint(
e650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e660: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
e670: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e680: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
e690: 20 54 79 70 65 20 6f 72 64 65 72 42 79 54 79 70   Type orderByTyp
e6a0: 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20  e = typeof(..   
e6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
e6c0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
e6d0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
e6e0: 72 64 65 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20  rderby);....    
e6f0: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
e700: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20  OfOrderByType = 
e710: 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 6f  Marshal.SizeOf(o
e720: 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a  rderByType);....
e730: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
e740: 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20  (int iOrderBy = 
e750: 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f  0; iOrderBy < nO
e760: 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79  rderBy; iOrderBy
e770: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
e780: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e790: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73      IntPtr pOffs
e7a0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
e7b0: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
e7c0: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
e7d0: 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72 42           pOrderB
e7e0: 79 2c 20 69 4f 72 64 65 72 42 79 20 2a 20 73 69  y, iOrderBy * si
e7f0: 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65 29  zeOfOrderByType)
e800: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e810: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
e820: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
e830: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f  _index_orderby o
e840: 72 64 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20  rderBy =..      
e850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 55                (U
e860: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
e870: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
e880: 5f 6f 72 64 65 72 62 79 29 0d 0a 20 20 20 20 20  _orderby)..     
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8a0: 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f     Marshal.PtrTo
e8b0: 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65  Structure(pOffse
e8c0: 74 2c 20 6f 72 64 65 72 42 79 54 79 70 65 29 3b  t, orderByType);
e8d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e8e0: 20 20 20 20 6f 72 64 65 72 42 79 73 5b 69 4f 72      orderBys[iOr
e8f0: 64 65 72 42 79 5d 20 3d 20 6e 65 77 20 53 51 4c  derBy] = new SQL
e900: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28  iteIndexOrderBy(
e910: 6f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  orderBy);..     
e920: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e930: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c          if (incl
e940: 75 64 65 4f 75 74 70 75 74 29 0d 0a 20 20 20 20  udeOutput)..    
e950: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e960: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e970: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75  eIndexOutputs ou
e980: 74 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75  tputs = index.Ou
e990: 74 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  tputs;....      
e9a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75            if (ou
e9b0: 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  tputs == null)..
e9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9d0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
e9f0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
ea00: 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73  aintUsage[] cons
ea10: 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a  traintUsages =..
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea30: 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73      outputs.Cons
ea40: 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d  traintUsages;...
ea50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ea60: 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
ea70: 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  sages == null)..
ea80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea90: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
eaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
eab0: 79 70 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  ype constraintUs
eac0: 61 67 65 54 79 70 65 20 3d 20 74 79 70 65 6f 66  ageType = typeof
ead0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eae0: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
eaf0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
eb00: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
eb10: 69 6e 74 5f 75 73 61 67 65 29 3b 0d 0a 0d 0a 20  int_usage);.... 
eb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
eb30: 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61  nt sizeOfConstra
eb40: 69 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d  intUsageType = M
eb50: 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a  arshal.SizeOf(..
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb70: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73      constraintUs
eb80: 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  ageType);....   
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
eba0: 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e   (int iConstrain
ebb0: 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69  t = 0; iConstrai
ebc0: 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74  nt < nConstraint
ebd0: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29  ; iConstraint++)
ebe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ebf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ec00: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
ec10: 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65  pOffset = SQLite
ec20: 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f  Marshal.IntPtrFo
ec30: 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec50: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61    pConstraintUsa
ec60: 67 65 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  ge, iConstraint 
ec70: 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  * sizeOfConstrai
ec80: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
ec90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eca0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
ecb0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
ecc0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
ecd0: 74 5f 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69  t_usage constrai
ece0: 6e 74 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20  ntUsage =..     
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed00: 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65     (UnsafeNative
ed10: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
ed20: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
ed30: 5f 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20  _usage)..       
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed50: 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72       Marshal.Ptr
ed60: 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66  ToStructure(pOff
ed70: 73 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55  set, constraintU
ed80: 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  sageType);....  
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
edb0: 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20  es[iConstraint] 
edc0: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
edd0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
ede0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
edf0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
ee00: 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20  raintUsage);..  
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ee20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ee30: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
ee40: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
ee50: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
ee70: 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
ee80: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d  , sizeof(int));.
ee90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
eea0: 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78     outputs.Index
eeb0: 4e 75 6d 62 65 72 20 3d 20 53 51 4c 69 74 65 4d  Number = SQLiteM
eec0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
eed0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eee0: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f         pIndex, o
eef0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
ef00: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
ef10: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
ef20: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
ef30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ef40: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
ef50: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
ef60: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
ef70: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
ef80: 74 73 2e 49 6e 64 65 78 53 74 72 69 6e 67 20 3d  ts.IndexString =
ef90: 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74   SQLiteString.St
efa0: 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
efb0: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
efc0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
efd0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
efe0: 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  r(pIndex, offset
eff0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f000: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
f010: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
f020: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
f030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f040: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
f050: 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
f060: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f070: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4e         outputs.N
f080: 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
f090: 72 69 6e 67 20 3d 20 53 51 4c 69 74 65 4d 61 72  ring = SQLiteMar
f0a0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
f0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f0c0: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
f0d0: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
f0e0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
f0f0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f100: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
f110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f120: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
f130: 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69  f(int), sizeof(i
f140: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
f150: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
f160: 2e 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64  .OrderByConsumed
f170: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
f180: 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20  .ReadInt32(..   
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1a0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
f1b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f1c0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
f1d0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
f1e0: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f200: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
f210: 74 29 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  t), sizeof(doubl
f220: 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e));....        
f230: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
f240: 45 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20  EstimatedCost = 
f250: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
f260: 61 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  adDouble(..     
f270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
f280: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
f290: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f2a0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f2b0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f2c0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
f2e0: 73 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62  set, sizeof(doub
f2f0: 6c 65 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  le), sizeof(long
f300: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f310: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
f320: 74 73 2e 43 61 6e 55 73 65 45 73 74 69 6d 61 74  ts.CanUseEstimat
f330: 65 64 52 6f 77 73 28 29 29 0d 0a 20 20 20 20 20  edRows())..     
f340: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f360: 20 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61    outputs.Estima
f370: 74 65 64 52 6f 77 73 20 3d 20 53 51 4c 69 74 65  tedRows = SQLite
f380: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36  Marshal.ReadInt6
f390: 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4(..            
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
f3b0: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20  ex, offset);..  
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f3d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f3e0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f3f0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f400: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
f420: 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  set, sizeof(long
f430: 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  ), sizeof(int));
f440: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f450: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
f460: 43 61 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73  CanUseIndexFlags
f470: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
f480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f490: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
f4a0: 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 20 3d  uts.IndexFlags =
f4b0: 20 28 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61   (SQLiteIndexFla
f4c0: 67 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs)..           
f4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
f4e0: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
f4f0: 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
f500: 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  set);..         
f510: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f520: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
f530: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
f540: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
f550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f560: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
f570: 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f  zeof(int), sizeo
f580: 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20  f(long));....   
f590: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f5a0: 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 43  (outputs.CanUseC
f5b0: 6f 6c 75 6d 6e 73 55 73 65 64 28 29 29 0d 0a 20  olumnsUsed()).. 
f5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f5e0: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f        outputs.Co
f5f0: 6c 75 6d 6e 73 55 73 65 64 20 3d 20 53 51 4c 69  lumnsUsed = SQLi
f600: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
f610: 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
f620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
f630: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
f640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f650: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
f660: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
f670: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f6c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
f6d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
f6e0: 20 2f 2f 2f 20 50 6f 70 75 6c 61 74 65 73 20 74   /// Populates t
f6f0: 68 65 20 6f 75 74 70 75 74 73 20 6f 66 20 61 20  he outputs of a 
f700: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61  pre-allocated na
f710: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
f720: 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20  ex_info..       
f730: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 75   /// structure u
f740: 73 69 6e 67 20 61 6e 20 65 78 69 73 74 69 6e 67  sing an existing
f750: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
f760: 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
f770: 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
f780: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
f790: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f7a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
f7b0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
f7c0: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
f7d0: 20 54 68 65 20 65 78 69 73 74 69 6e 67 20 3c 73   The existing <s
f7e0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
f7f0: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
f800: 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
f810: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
f820: 20 74 68 65 20 6f 75 74 70 75 74 20 64 61 74 61   the output data
f830: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
f840: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f850: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
f860: 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
f870: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
f880: 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
f890: 72 20 74 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c  r to the pre-all
f8a0: 6f 63 61 74 65 64 20 6e 61 74 69 76 65 20 73 71  ocated native sq
f8b0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
f8c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
f8d0: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
f8e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f8f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
f900: 61 6d 20 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65  am name="include
f910: 49 6e 70 75 74 22 3e 0d 0a 20 20 20 20 20 20 20  Input">..       
f920: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
f930: 20 69 6e 63 6c 75 64 65 20 66 69 65 6c 64 73 20   include fields 
f940: 66 72 6f 6d 20 74 68 65 20 69 6e 70 75 74 73 20  from the inputs 
f950: 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e  portion of the n
f960: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
f970: 2f 2f 20 73 74 72 75 63 74 75 72 65 3b 20 6f 74  // structure; ot
f980: 68 65 72 77 69 73 65 2c 20 74 68 65 20 22 69 6e  herwise, the "in
f990: 70 75 74 22 20 66 69 65 6c 64 73 20 77 69 6c 6c  put" fields will
f9a0: 20 6e 6f 74 20 62 65 20 77 72 69 74 74 65 6e 2e   not be written.
f9b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
f9c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
f9d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f9e0: 76 6f 69 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a  void ToIntPtr(..
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
fa00: 74 65 49 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a  teIndex index,..
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
fa20: 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20  tr pIndex,..    
fa30: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63          bool inc
fa40: 6c 75 64 65 49 6e 70 75 74 0d 0a 20 20 20 20 20  ludeInput..     
fa50: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
fa60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fa70: 20 69 66 20 28 69 6e 64 65 78 20 3d 3d 20 6e 75   if (index == nu
fa80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
fa90: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
fab0: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f  teIndexOutputs o
fac0: 75 74 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f  utputs = index.O
fad0: 75 74 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  utputs;....     
fae0: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
faf0: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
fb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
fb10: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
fb20: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
fb30: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
fb40: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
fb50: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
fb60: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e       outputs.Con
fb70: 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a  straintUsages;..
fb80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fb90: 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
fba0: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
fbc0: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
fbd0: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 49      SQLiteIndexI
fbe0: 6e 70 75 74 73 20 69 6e 70 75 74 73 20 3d 20 6e  nputs inputs = n
fbf0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
fc00: 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
fc10: 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72  straint[] constr
fc20: 61 69 6e 74 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  aints = null;.. 
fc30: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
fc40: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
fc50: 6f 72 64 65 72 42 79 73 20 3d 20 6e 75 6c 6c 3b  orderBys = null;
fc60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fc70: 69 66 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74  if (includeInput
fc80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
fc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fca0: 20 20 69 6e 70 75 74 73 20 3d 20 69 6e 64 65 78    inputs = index
fcb0: 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20  .Inputs;....    
fcc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
fcd0: 69 6e 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  inputs == null).
fce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fcf0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
fd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd10: 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 69 6e  constraints = in
fd20: 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73  puts.Constraints
fd30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fd40: 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
fd50: 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ints == null).. 
fd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd70: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72                or
fd90: 64 65 72 42 79 73 20 3d 20 69 6e 70 75 74 73 2e  derBys = inputs.
fda0: 4f 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20  OrderBys;....   
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
fdc0: 28 6f 72 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c  (orderBys == nul
fdd0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
fde0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
fdf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fe00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fe10: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
fe20: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
fe30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fe40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fe50: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
fe60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fe70: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  int nConstraint 
fe80: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
fe90: 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78  ReadInt32(pIndex
fea0: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
feb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
fec0: 63 6c 75 64 65 49 6e 70 75 74 20 26 26 20 28 6e  cludeInput && (n
fed0: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f  Constraint != co
fee0: 6e 73 74 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68  nstraints.Length
fef0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
ff00: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
ff10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
ff20: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f  Constraint != co
ff30: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 2e 4c  nstraintUsages.L
ff40: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
ff50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
ff60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
ff70: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
ff80: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
ff90: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
ffa0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
ffb0: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
ffc0: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
ffd0: 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
ffe0: 64 65 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20  deInput)..      
fff0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10000 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
10010 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51  pConstraint = SQ
10020 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
10030 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
10040 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
10050 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
10060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10070 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74   int sizeOfConst
10080 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73  raintType = Mars
10090 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
100a0 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
100b0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
100c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
100d0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
100e0 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint));....     
100f0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
10100 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
10110 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
10120 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
10130 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10150 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10160 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
10170 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
10180 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
10190 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d  int constraint =
101a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
101b0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
101c0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
101d0 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
101e0 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  constraint(..   
101f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10200 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
10210 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74  ints[iConstraint
10220 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ]);....         
10230 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
10240 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74  al.StructureToPt
10250 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
10260 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
10270 74 72 61 69 6e 74 2c 20 53 51 4c 69 74 65 4d 61  traint, SQLiteMa
10280 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
10290 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
102a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102b0 70 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f  pConstraint, iCo
102c0 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f  nstraint * sizeO
102d0 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29  fConstraintType)
102e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
102f0 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65             false
10300 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10310 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10320 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10330 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
10340 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
10350 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
10360 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
10370 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
10380 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
10390 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
103a0 6e 4f 72 64 65 72 42 79 20 3d 20 69 6e 63 6c 75  nOrderBy = inclu
103b0 64 65 49 6e 70 75 74 20 3f 0d 0a 20 20 20 20 20  deInput ?..     
103c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
103d0 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
103e0 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
103f0 74 29 20 3a 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  t) : 0;....     
10400 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
10410 64 65 49 6e 70 75 74 20 26 26 20 28 6e 4f 72 64  deInput && (nOrd
10420 65 72 42 79 20 21 3d 20 6f 72 64 65 72 42 79 73  erBy != orderBys
10430 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
10440 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10450 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
10460 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
10470 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
10480 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
10490 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
104a0 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
104b0 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
104c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
104d0 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20 20 20  cludeInput)..   
104e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
104f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
10500 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51  tr pOrderBy = SQ
10510 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
10520 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f  IntPtr(pIndex, o
10530 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
10540 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
10550 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
10560 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
10570 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
10590 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
105a0 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
105b0 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20  _orderby));.... 
105c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
105d0 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72 42 79  or (int iOrderBy
105e0 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79 20 3c   = 0; iOrderBy <
105f0 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72 64 65   nOrderBy; iOrde
10600 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  rBy++)..        
10610 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
10630 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
10640 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
10650 5f 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42 79  _orderby orderBy
10660 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
10670 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10680 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
10690 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
106a0 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20  x_orderby(..    
106b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106c0 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
106d0 5b 69 4f 72 64 65 72 42 79 5d 29 3b 0d 0a 0d 0a  [iOrderBy]);....
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106f0 20 20 20 20 4d 61 72 73 68 61 6c 2e 53 74 72 75      Marshal.Stru
10700 63 74 75 72 65 54 6f 50 74 72 28 0d 0a 20 20 20  ctureToPtr(..   
10710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10720 20 20 20 20 20 6f 72 64 65 72 42 79 2c 20 53 51       orderBy, SQ
10730 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50  LiteMarshal.IntP
10740 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20  trForOffset(..  
10750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10760 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 2c 20        pOrderBy, 
10770 69 4f 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f  iOrderBy * sizeO
10780 66 4f 72 64 65 72 42 79 54 79 70 65 29 2c 0d 0a  fOrderByType),..
10790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107a0 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d          false);.
107b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
107c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
107d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
107e0 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
107f0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
10800 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
10810 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
10820 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50  ntPtr.Size, IntP
10830 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
10840 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
10850 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
10860 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
10870 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
10880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
10890 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
108a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
108b0 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
108c0 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61  ntUsageType = Ma
108d0 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
108e0 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
108f0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
10900 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
10910 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
10920 6e 74 5f 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20  nt_usage));.... 
10930 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
10940 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
10950 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
10960 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
10970 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
10980 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
109a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
109b0 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
109c0 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
109d0 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
109e0 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
109f0 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73           new Uns
10a00 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10a10 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
10a20 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
10a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10a40 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
10a50 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73  aintUsages[iCons
10a60 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20  traint]);....   
10a70 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72               Mar
10a80 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f  shal.StructureTo
10a90 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
10aa0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
10ab0 61 69 6e 74 55 73 61 67 65 2c 20 53 51 4c 69 74  aintUsage, SQLit
10ac0 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46  eMarshal.IntPtrF
10ad0 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
10ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
10af0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c  ConstraintUsage,
10b00 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
10b10 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
10b20 73 61 67 65 54 79 70 65 29 2c 0d 0a 20 20 20 20  sageType),..    
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
10b50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10b60 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
10b70 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
10b80 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
10b90 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10ba0 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
10bb0 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
10bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
10bd0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
10be0 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  eInt32(pIndex, o
10bf0 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
10c00 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10c10 49 6e 64 65 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d  IndexNumber);...
10c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
10c30 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
10c40 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
10c50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10c60 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
10c70 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
10c80 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
10c90 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
10ca0 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
10cb0 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
10ce0 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
10cf0 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
10d00 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10d10 49 6e 64 65 78 53 74 72 69 6e 67 2c 20 66 61 6c  IndexString, fal
10d20 73 65 29 29 3b 20 2f 2a 20 4f 4b 3a 20 46 52 45  se)); /* OK: FRE
10d30 45 44 20 42 59 20 43 4f 52 45 2a 2f 0d 0a 0d 0a  ED BY CORE*/....
10d40 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10d50 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
10d60 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
10d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d80 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72    offset, IntPtr
10d90 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e  .Size, sizeof(in
10da0 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
10db0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10dc0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
10dd0 6a 75 73 74 20 61 6c 6c 6f 63 61 74 65 64 20 74  just allocated t
10de0 68 65 20 49 6e 64 65 78 53 74 72 69 6e 67 20 66  he IndexString f
10df0 69 65 6c 64 3b 20 74 68 65 72 65 66 6f 72 65 2c  ield; therefore,
10e00 20 77 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20   we..           
10e10 20 2f 2f 20 20 20 20 20 20 20 6e 65 65 64 20 74   //       need t
10e20 6f 20 73 65 74 20 6d 61 6b 65 20 73 75 72 65 20  o set make sure 
10e30 74 68 65 20 4e 65 65 64 54 6f 46 72 65 65 49 6e  the NeedToFreeIn
10e40 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64 0d  dexString field.
10e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
10e60 20 20 20 20 20 20 69 73 20 6e 6f 6e 2d 7a 65 72        is non-zer
10e70 6f 3b 20 68 6f 77 65 76 65 72 2c 20 77 65 20 61  o; however, we a
10e80 72 65 20 6e 6f 74 20 70 69 63 6b 79 20 61 62 6f  re not picky abo
10e90 75 74 20 74 68 65 20 65 78 61 63 74 0d 0a 20 20  ut the exact..  
10ea0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10eb0 20 20 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20     value...     
10ec0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10ed0 20 20 20 20 20 20 20 69 6e 74 20 6e 65 65 64 54         int needT
10ee0 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10ef0 20 3d 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54   = outputs.NeedT
10f00 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10f10 20 21 3d 20 30 20 3f 0d 0a 20 20 20 20 20 20 20   != 0 ?..       
10f20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
10f30 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78  .NeedToFreeIndex
10f40 53 74 72 69 6e 67 20 3a 20 31 3b 0d 0a 0d 0a 20  String : 1;.... 
10f50 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
10f60 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
10f70 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
10f80 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
10f90 20 20 20 20 20 6e 65 65 64 54 6f 46 72 65 65 49       needToFreeI
10fa0 6e 64 65 78 53 74 72 69 6e 67 29 3b 0d 0a 0d 0a  ndexString);....
10fb0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10fc0 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
10fd0 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
10fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ff0 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
11000 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69 6e  (int), sizeof(in
11010 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
11020 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
11030 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
11040 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
11050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
11060 74 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e  tputs.OrderByCon
11070 73 75 6d 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  sumed);....     
11080 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
11090 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
110a0 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
110b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
110c0 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
110d0 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  , sizeof(double)
110e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
110f0 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 45 73    if (outputs.Es
11100 74 69 6d 61 74 65 64 43 6f 73 74 2e 48 61 73 56  timatedCost.HasV
11110 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
11120 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11130 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
11140 68 61 6c 2e 57 72 69 74 65 44 6f 75 62 6c 65 28  hal.WriteDouble(
11150 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
11160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11170 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74       outputs.Est
11180 69 6d 61 74 65 64 43 6f 73 74 2e 47 65 74 56 61  imatedCost.GetVa
11190 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b  lueOrDefault());
111a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
111b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
111c0 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
111d0 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
111e0 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
111f0 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
11200 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 73 69 7a  eof(double), siz
11210 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20  eof(long));.... 
11220 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
11230 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73 74  utputs.CanUseEst
11240 69 6d 61 74 65 64 52 6f 77 73 28 29 20 26 26 0d  imatedRows() &&.
11250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11260 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74   outputs.Estimat
11270 65 64 52 6f 77 73 2e 48 61 73 56 61 6c 75 65 29  edRows.HasValue)
11280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
11290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
112a0 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
112b0 72 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78  riteInt64(pIndex
112c0 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
112d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
112e0 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
112f0 52 6f 77 73 2e 47 65 74 56 61 6c 75 65 4f 72 44  Rows.GetValueOrD
11300 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20  efault());..    
11310 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11320 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
11330 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
11340 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
11350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
11360 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f  ffset, sizeof(lo
11370 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ng), sizeof(int)
11380 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11390 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
113a0 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29  nUseIndexFlags()
113b0 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
113c0 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64       outputs.Ind
113d0 65 78 46 6c 61 67 73 2e 48 61 73 56 61 6c 75 65  exFlags.HasValue
113e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
113f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11400 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
11410 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
11420 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
11430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
11440 69 6e 74 29 6f 75 74 70 75 74 73 2e 49 6e 64 65  int)outputs.Inde
11450 78 46 6c 61 67 73 2e 47 65 74 56 61 6c 75 65 4f  xFlags.GetValueO
11460 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20  rDefault());..  
11470 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11480 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
11490 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
114a0 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
114b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
114c0 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
114d0 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  int), sizeof(lon
114e0 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g));....        
114f0 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
11500 43 61 6e 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65  CanUseColumnsUse
11510 64 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  d() &&..        
11520 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
11530 43 6f 6c 75 6d 6e 73 55 73 65 64 2e 48 61 73 56  ColumnsUsed.HasV
11540 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
11550 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11560 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
11570 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70  hal.WriteInt64(p
11580 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
11590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115a0 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75      outputs.Colu
115b0 6d 6e 73 55 73 65 64 2e 47 65 74 56 61 6c 75 65  mnsUsed.GetValue
115c0 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20  OrDefault());.. 
115d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
115e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
115f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
11600 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11650 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
11660 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
11670 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
11680 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
11690 49 6e 70 75 74 73 20 69 6e 70 75 74 73 3b 0d 0a  Inputs inputs;..
116a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
116b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
116c0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
116d0 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  ="SQLiteIndexInp
116e0 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  uts" /> object i
116f0 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
11700 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
11710 74 68 65 20 69 6e 70 75 74 73 20 74 6f 20 74 68  the inputs to th
11720 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
11730 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
11740 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
11750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
11760 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
11770 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11780 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
11790 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 49  iteIndexInputs I
117a0 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b  nputs..        {
117b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
117c0 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 70 75 74  t { return input
117d0 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s; }..        }.
117e0 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11830 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
11840 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
11850 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73  xOutputs outputs
11860 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
11870 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11880 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
11890 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
118a0 4f 75 74 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65  Outputs" /> obje
118b0 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74  ct instance cont
118c0 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
118d0 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 73 20  /// the outputs 
118e0 66 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72  from the <see cr
118f0 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
11900 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
11910 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
11920 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
11930 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11940 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
11950 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  lic SQLiteIndexO
11960 75 74 70 75 74 73 20 4f 75 74 70 75 74 73 0d 0a  utputs Outputs..
11970 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11980 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
11990 75 72 6e 20 6f 75 74 70 75 74 73 3b 20 7d 0d 0a  urn outputs; }..
119a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
119b0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
119c0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
119d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
119e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
119f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
11a30 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72  region SQLiteVir
11a40 74 75 61 6c 54 61 62 6c 65 20 42 61 73 65 20 43  tualTable Base C
11a50 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
11a60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
11a70 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
11a80 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64  esents a managed
11a90 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
11aa0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20  mplementation.  
11ab0 49 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e  It is..    /// n
11ac0 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68  ot sealed and sh
11ad0 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20  ould be used as 
11ae0 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
11af0 6f 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66 69  or any user-defi
11b00 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 72  ned..    /// vir
11b10 74 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73 73  tual table class
11b20 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69  es implemented i
11b30 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  n managed code..
11b40 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
11b50 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
11b60 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72 74  class SQLiteVirt
11b70 75 61 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20  ualTable :..    
11b80 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
11b90 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69  ativeHandle, IDi
11ba0 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20  sposable /* NOT 
11bb0 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b  SEALED */..    {
11bc0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
11bd0 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
11be0 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
11bf0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11c00 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
11c10 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72  x within the arr
11c20 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
11c30 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
11c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11c50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11c60 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
11c70 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
11c80 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
11c90 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
11ca0 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
11cb0 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61  /> methods conta
11cc0 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
11cd0 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74     /// name of t
11ce0 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  he module implem
11cf0 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74  enting this virt
11d00 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
11d10 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11d20 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
11d30 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f  ate const int Mo
11d40 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  duleNameIndex = 
11d50 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  0;....        //
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 2f 2f  ////////////////
11d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11da0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
11db0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11dd0 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65  index within the
11de0 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67   array of string
11df0 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
11e00 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
11e10 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
11e20 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
11e30 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20  reate" /> and.. 
11e40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11e50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11e60 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
11e70 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63  ct" /> methods c
11e80 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20  ontaining the.. 
11e90 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20         /// name 
11ea0 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
11eb0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
11ec0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
11ed0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
11ee0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
11ef0 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e  private const in
11f00 74 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e  t DatabaseNameIn
11f10 64 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20  dex = 1;....    
11f20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
11f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
11f80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
11f90 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68  / The index with
11fa0 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  in the array of 
11fb0 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64  strings provided
11fc0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
11fd0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
11fe0 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
11ff0 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
12000 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
12010 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
12020 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
12030 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  .Connect" /> met
12040 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  hods containing 
12050 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
12060 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72   name of the vir
12070 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
12080 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
12090 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
120a0 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 54  vate const int T
120b0 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  ableNameIndex = 
120c0 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  2;..        #end
120d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
120e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
120f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12120 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12130 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
12140 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
12150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
12160 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12170 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
12180 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
12190 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
121a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
121b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
121c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
121d0 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
121e0 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
121f0 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  al array of stri
12200 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
12210 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
12220 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
12230 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
12240 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
12250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
12260 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
12270 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
12280 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
12290 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
122a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
122b0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69   public SQLiteVi
122c0 72 74 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20  rtualTable(..   
122d0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
122e0 5d 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  ] arguments..   
122f0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
12300 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12310 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74     this.argument
12320 73 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = arguments;..
12330 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12340 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
12350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
123b0 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
123c0 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
123d0 72 69 76 61 74 65 20 73 74 72 69 6e 67 5b 5d 20  rivate string[] 
123e0 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20  arguments;..    
123f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12400 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12410 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61  he original arra
12420 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
12430 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
12440 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
12450 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
12460 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
12470 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
12480 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
12490 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
124a0 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
124b0 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
124c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
124d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
124e0 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
124f0 67 5b 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20  g[] Arguments.. 
12500 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12510 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
12520 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
12530 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d  urn arguments; }
12540 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
12550 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
125a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
125b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
125c0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
125d0 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   the module impl
125e0 65 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69  ementing this vi
125f0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
12600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12610 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
12620 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
12630 69 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a  ing ModuleName..
12640 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12650 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
12660 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12670 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
12680 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
12690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
126a0 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
126b0 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
126c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
126d0 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
126e0 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
126f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12700 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
12710 67 74 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65  gth > ModuleName
12720 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
12730 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12750 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73  return arguments
12760 5b 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78  [ModuleNameIndex
12770 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
12780 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12790 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
127a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127c0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
127d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
127e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
127f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
12800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12850 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
12860 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
12870 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
12880 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
12890 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
128a0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
128b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
128c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
128d0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
128e0 74 72 69 6e 67 20 44 61 74 61 62 61 73 65 4e 61  tring DatabaseNa
128f0 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  me..        {.. 
12900 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
12910 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
12930 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
12940 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12950 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75     string[] argu
12960 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74  ments = Argument
12970 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
12980 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d        if ((argum
12990 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  ents != null) &&
129a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
129b0 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73        (arguments
129c0 2e 4c 65 6e 67 74 68 20 3e 20 44 61 74 61 62 61  .Length > Databa
129d0 73 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  seNameIndex)).. 
129e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
129f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a00 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
12a10 75 6d 65 6e 74 73 5b 44 61 74 61 62 61 73 65 4e  uments[DatabaseN
12a20 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20  ameIndex];..    
12a30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
12a50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
12a60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12a70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12a80 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
12a90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12aa0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12ab0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12ac0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12b10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12b20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12b30 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76  he name of the v
12b40 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
12b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
12b60 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
12b70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
12b80 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a  ring TableName..
12b90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12ba0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
12bb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12bc0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
12bd0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
12be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
12bf0 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
12c00 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
12c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c20 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
12c30 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
12c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c50 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
12c60 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49  gth > TableNameI
12c70 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
12c80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12ca0 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
12cb0 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b  TableNameIndex];
12cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12cd0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
12ce0 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
12cf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d10 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
12d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
12d40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
12d50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12da0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
12db0 65 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e  e SQLiteIndex in
12dc0 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex;..        //
12dd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12de0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
12df0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
12e00 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  dex" /> object i
12e10 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
12e20 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20  ng all the..    
12e30 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72      /// data for
12e40 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20   the inputs and 
12e50 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67  outputs relating
12e60 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63   to the most rec
12e70 65 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20  ent index..     
12e80 20 20 20 2f 2f 2f 20 73 65 6c 65 63 74 69 6f 6e     /// selection
12e90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12ea0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12eb0 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
12ec0 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 20 49 6e  l SQLiteIndex In
12ed0 64 65 78 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dex..        {..
12ee0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
12ef0 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
12f00 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b  ); return index;
12f10 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
12f20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
12f30 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12f90 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
12fa0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
12fb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12fc0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
12fd0 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e 6f  method should no
12fe0 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20 62  rmally be used b
12ff0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
13000 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
13010 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
13020 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
13030 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
13040 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
13050 20 70 65 72 66 6f 72 6d 20 69 6e 64 65 78 20 73   perform index s
13060 65 6c 65 63 74 69 6f 6e 20 62 61 73 65 64 20 6f  election based o
13070 6e 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  n the constraint
13080 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
13090 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  e..        /// S
130a0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
130b0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
130c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
130d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
130e0 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
130f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
13100 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
13110 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74  Index" /> object
13120 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69   instance contai
13130 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20  ning all the..  
13140 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66        /// data f
13150 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e  or the inputs an
13160 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69  d outputs relati
13170 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c 65  ng to index sele
13180 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
13190 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
131a0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
131b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
131c0 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73   Non-zero upon s
131d0 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  uccess...       
131e0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
131f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13200 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 42 65 73  virtual bool Bes
13210 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
13220 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
13230 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20   index..        
13240 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
13250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
13260 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
13270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
13280 69 73 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78  is.index = index
13290 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
132a0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
132b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
132c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
132d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
13310 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
13320 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
13330 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65  / Attempts to re
13340 63 6f 72 64 20 74 68 65 20 72 65 6e 61 6d 69 6e  cord the renamin
13350 67 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  g of the virtual
13360 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74 65   table associate
13370 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
13380 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
13390 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
133a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
133b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
133c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
133d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
133e0 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72  The new name for
133f0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
13400 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
13410 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
13420 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
13430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
13440 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
13450 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
13460 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
13470 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
13480 74 75 61 6c 20 62 6f 6f 6c 20 52 65 6e 61 6d 65  tual bool Rename
13490 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
134a0 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
134b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
134c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
134d0 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
134e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
134f0 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
13500 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61                (a
13520 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20  rguments.Length 
13530 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  > TableNameIndex
13540 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
13550 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13560 20 20 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62     arguments[Tab
13570 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 20 3d 20 6e  leNameIndex] = n
13580 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
13590 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
135a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
135b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
135c0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
135d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
135e0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
135f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13640 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
13650 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
13660 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d  eHandle Members.
13670 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
13680 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61   IntPtr nativeHa
13690 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndle;..        /
136a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
136b0 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
136c0 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
136d0 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
136e0 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
136f0 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
13700 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
13710 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
13720 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13730 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
13740 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
13750 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
13760 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13770 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
13780 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
13790 72 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b  rn nativeHandle;
137a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
137b0 69 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e  internal set { n
137c0 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61  ativeHandle = va
137d0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
137e0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
137f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
13800 20 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 2f 2f  ////////////////
13830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13840 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13850 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
13860 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
13870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13880 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13890 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
138a0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
138b0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
138c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
138d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
138e0 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
138f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13900 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
13910 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
13920 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
13930 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
13940 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13950 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
13960 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
139b0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
139c0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
139d0 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
139e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
139f0 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
13a00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13a10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13a20 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65  // Throws an <se
13a30 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69  e cref="ObjectDi
13a40 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22  sposedException"
13a50 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65   /> if this obje
13a60 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
13a70 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
13a80 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
13a90 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13aa0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
13ab0 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
13ac0 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
13ad0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  ow */..        {
13ae0 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44  ..#if THROW_ON_D
13af0 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20  ISPOSED..       
13b00 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
13b10 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
13b20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13b30 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
13b40 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
13b50 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
13b60 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
13b70 66 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f(SQLiteVirtualT
13b80 61 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20  able).Name);..  
13b90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
13ba0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
13bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
13c10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13c20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
13c30 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
13c40 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
13c50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13c60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13c70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
13c80 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
13c90 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
13ca0 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
13cb0 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f  being called fro
13cc0 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
13cd0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69  // <see cref="Di
13ce0 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68  spose()" /> meth
13cf0 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69  od.  Zero if thi
13d00 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
13d10 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20  g called..      
13d20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66    /// from the f
13d30 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
13d40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
13d50 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
13d60 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
13d70 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
13d80 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
13d90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13da0 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a  if (!disposed)..
13db0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13dd0 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
13de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13df0 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
13e00 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f        //    ////
13e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13e40 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
13e50 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
13e60 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
13e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13e80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ea0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
13eb0 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
13ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ed0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ef0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
13f00 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
13f10 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
13f20 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
13f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
13f70 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
13f80 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
13f90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13fa0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
13fb0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
13fc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14010 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
14020 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
14030 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14040 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
14050 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
14060 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
14070 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
14080 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14090 7e 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  ~SQLiteVirtualTa
140a0 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ble()..        {
140b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
140c0 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
140d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
140e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
140f0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
14100 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
14110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14150 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
14160 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74  egion SQLiteVirt
14170 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 42  ualTableCursor B
14180 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  ase Class..    /
14190 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
141a0 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
141b0 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61   represents a ma
141c0 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61  naged virtual ta
141d0 62 6c 65 20 63 75 72 73 6f 72 20 69 6d 70 6c 65  ble cursor imple
141e0 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
141f0 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65  /// It is not se
14200 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20  aled and should 
14210 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62  be used as the b
14220 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e  ase class for an
14230 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d  y..    /// user-
14240 64 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20  defined virtual 
14250 74 61 62 6c 65 20 63 75 72 73 6f 72 20 63 6c 61  table cursor cla
14260 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  sses implemented
14270 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65   in managed code
14280 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
14290 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
142a0 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69  c class SQLiteVi
142b0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
142c0 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
142d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
142e0 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65  dle, IDisposable
142f0 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a   /* NOT SEALED *
14300 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  /..    {..      
14310 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63    #region Protec
14320 74 65 64 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ted Constants.. 
14330 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
14340 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
14350 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
14360 72 65 73 65 6e 74 73 20 61 6e 20 69 6e 76 61 6c  resents an inval
14370 69 64 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  id integer row s
14380 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 2e 0d  equence number..
14390 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
143a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
143b0 20 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69   protected stati
143c0 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 49  c readonly int I
143d0 6e 76 61 6c 69 64 52 6f 77 49 6e 64 65 78 20 3d  nvalidRowIndex =
143e0 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e   0;..        #en
143f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
14400 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14450 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
14460 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
14470 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14480 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14490 68 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74  he field holds t
144a0 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
144b0 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66  equence number f
144c0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
144d0 6f 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ow..        /// 
144e0 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68  pointed to by th
144f0 69 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74  is cursor object
14500 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
14510 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14520 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
14530 61 74 65 20 69 6e 74 20 72 6f 77 49 6e 64 65 78  ate int rowIndex
14540 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
14550 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14560 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
145b0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
145c0 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
145d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
145e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
145f0 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
14600 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
14610 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
14620 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
14640 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
14650 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
14660 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
14670 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
14680 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
14690 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
146a0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
146b0 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
146c0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
146d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
146e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
146f0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
14700 6c 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20  leCursor(..     
14710 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
14720 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d  tualTable table.
14730 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
14740 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
14750 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
14760 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
14770 73 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c 65 3b  s.table = table;
14780 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
14790 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
147a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
147b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
14800 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
14810 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
14820 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14830 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
14840 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
14850 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
14860 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
14870 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14880 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
14890 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
148a0 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20  Cursor()..      
148b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
148c0 20 72 6f 77 49 6e 64 65 78 20 3d 20 49 6e 76 61   rowIndex = Inva
148d0 6c 69 64 52 6f 77 49 6e 64 65 78 3b 0d 0a 20 20  lidRowIndex;..  
148e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
148f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14900 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14950 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
14960 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
14970 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
14980 76 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75  vate SQLiteVirtu
14990 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a  alTable table;..
149a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
149b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
149c0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
149d0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
149e0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
149f0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
14a00 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
14a10 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
14a20 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
14a30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14a40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
14a50 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69  lic virtual SQLi
14a60 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54  teVirtualTable T
14a70 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  able..        {.
14a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
14a90 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
14aa0 28 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65  (); return table
14ab0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
14ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14b20 76 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75  vate int indexNu
14b30 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f  mber;..        /
14b40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14b50 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72        /// Number
14b60 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
14b70 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
14b80 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73  ted index.  This
14b90 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20   value will..   
14ba0 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20       /// be set 
14bb0 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65  via the <see cre
14bc0 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  f="Filter" /> me
14bd0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
14be0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14bf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
14c00 72 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e  rtual int IndexN
14c10 75 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b  umber..        {
14c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
14c30 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
14c40 64 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65  d(); return inde
14c50 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20  xNumber; }..    
14c60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14c70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14cc0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
14cd0 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d  ng indexString;.
14ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
14cf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14d00 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20  /// String used 
14d10 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
14d20 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
14d30 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65  dex.  This value
14d40 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
14d50 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68  // be set via th
14d60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c  e <see cref="Fil
14d70 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
14d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
14d90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14da0 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
14db0 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69  string IndexStri
14dc0 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
14dd0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
14de0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
14df0 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74  ; return indexSt
14e00 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ring; }..       
14e10 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
14e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14e70 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
14e80 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a  alue[] values;..
14e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14ea0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14eb0 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73  // The values us
14ec0 65 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65  ed to filter the
14ed0 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76   rows returned v
14ee0 69 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f  ia this cursor o
14ef0 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
14f00 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68  // instance.  Th
14f10 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  is value will be
14f20 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65   set via the <se
14f30 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20  e cref="Filter" 
14f40 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
14f50 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
14f60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14f70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
14f80 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61  virtual SQLiteVa
14f90 6c 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20  lue[] Values..  
14fa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14fb0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
14fc0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
14fd0 72 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20  rn values; }..  
14fe0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14ff0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
15000 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15050 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
15060 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68  n Protected Meth
15070 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
15080 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15090 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
150a0 20 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20   to persist the 
150b0 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
150c0 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
150d0 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
150e0 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
150f0 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d  es in order to m
15100 61 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62  ake them availab
15110 6c 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20  le after the..  
15120 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
15130 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
15140 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
15150 22 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75  " /> method retu
15160 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns...        //
15170 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15180 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15190 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d   name="values">.
151a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
151b0 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63   array of <see c
151c0 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
151d0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
151e0 61 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20  ances to be..   
151f0 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74       /// persist
15200 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
15210 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
15220 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
15230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15240 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65  e number of <see
15250 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c   cref="SQLiteVal
15260 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ue" /> object in
15270 73 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72  stances that wer
15280 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
15290 75 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73  uccessfully pers
152a0 69 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  isted...        
152b0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
152c0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
152d0 64 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72  d virtual int Tr
152e0 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d  yPersistValues(.
152f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
15300 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65  iteValue[] value
15310 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
15320 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15330 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
15340 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
15350 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
15360 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
15370 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15380 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
15390 61 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65  ach (SQLiteValue
153a0 20 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73   value in values
153b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
153c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
153d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
153e0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
153f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15400 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
15410 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15420 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
15430 2e 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20  .Persist())..   
15440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15450 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a       result++;..
15460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15470 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
15480 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15490 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
154a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
154b0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
154c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15510 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
15520 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
15530 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
15540 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15550 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
15560 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c  od should normal
15570 6c 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68  ly be used by th
15580 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
15590 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
155a0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
155b0 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
155c0 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20   in order to..  
155d0 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72        /// perfor
155e0 6d 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74  m filtering of t
155f0 68 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61  he result rows a
15600 6e 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20  nd/or to record 
15610 74 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20  the filtering.. 
15620 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65         /// crite
15630 72 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20  ria provided by 
15640 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
15650 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
15660 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
15680 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
15690 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20  Number">..      
156a0 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65    /// Number use
156b0 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69  d to help identi
156c0 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  fy the selected 
156d0 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
156e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
156f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15700 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69   name="indexStri
15710 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ng">..        //
15720 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / String used to
15730 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
15740 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
15750 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
15760 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
15770 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
15780 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
15790 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
157a0 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  ues correspondin
157b0 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e  g to each column
157c0 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64   in the selected
157d0 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
157e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
157f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
15800 72 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65  rtual void Filte
15810 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
15820 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c  int indexNumber,
15830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
15840 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
15850 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
15860 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
15870 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ues..           
15880 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
15890 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
158a0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
158b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
158c0 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20  values != null) 
158d0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
158e0 20 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56      (TryPersistV
158f0 61 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d  alues(values) !=
15900 20 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29   values.Length))
15910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15930 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
15940 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  eException(..   
15950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15960 20 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73   "failed to pers
15970 69 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ist one or more 
15980 76 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20  values");..     
15990 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
159a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64          this.ind
159b0 65 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78  exNumber = index
159c0 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20  Number;..       
159d0 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53       this.indexS
159e0 74 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72  tring = indexStr
159f0 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ing;..          
15a00 20 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20    this.values = 
15a10 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20  values;..       
15a20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
15a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15a80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
15aa0 72 6d 69 6e 65 73 20 74 68 65 20 69 6e 74 65 67  rmines the integ
15ab0 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20  er row sequence 
15ac0 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63  number for the c
15ad0 75 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20 20  urrent row...   
15ae0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15af0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
15b00 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
15b10 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
15b20 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
15b30 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   number for the 
15b40 63 75 72 72 65 6e 74 20 72 6f 77 20 2d 4f 52 2d  current row -OR-
15b50 20 7a 65 72 6f 20 69 66 0d 0a 20 20 20 20 20 20   zero if..      
15b60 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
15b70 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
15b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
15b90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
15ba0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69  public virtual i
15bb0 6e 74 20 47 65 74 52 6f 77 49 6e 64 65 78 28 29  nt GetRowIndex()
15bc0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15bd0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15be0 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rowIndex;..     
15bf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15c50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64  ..        /// Ad
15c70 6a 75 73 74 73 20 74 68 65 20 69 6e 74 65 67 65  justs the intege
15c80 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
15c90 75 6d 62 65 72 20 73 6f 20 74 68 61 74 20 69 74  umber so that it
15ca0 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 0d 0a   refers to the..
15cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74          /// next
15cc0 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f   row...        /
15cd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15ce0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
15cf0 72 74 75 61 6c 20 76 6f 69 64 20 4e 65 78 74 52  rtual void NextR
15d00 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20  owIndex()..     
15d10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15d20 20 20 72 6f 77 49 6e 64 65 78 2b 2b 3b 0d 0a 20    rowIndex++;.. 
15d30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15d40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
15d50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15da0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
15db0 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
15dc0 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  Handle Members..
15dd0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
15de0 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e  IntPtr nativeHan
15df0 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle;..        //
15e00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15e10 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
15e20 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
15e30 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
15e40 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
15e50 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
15e60 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
15e70 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
15e80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15e90 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
15ea0 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e  virtual IntPtr N
15eb0 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
15ec0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15ed0 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
15ee0 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
15ef0 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20  n nativeHandle; 
15f00 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
15f10 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61  nternal set { na
15f20 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c  tiveHandle = val
15f30 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
15f40 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
15f50 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
15f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15fb0 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
15fc0 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
15fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15fe0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15ff0 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
16000 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
16010 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
16020 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16030 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
16040 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
16050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
16060 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
16070 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
16080 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
16090 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
160a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
160b0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
160c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16110 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
16120 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
16130 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
16140 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
16150 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
16160 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
16170 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16180 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
16190 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
161a0 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
161b0 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
161c0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
161d0 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
161e0 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
161f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16200 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
16210 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
16220 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
16230 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
16240 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
16250 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
16260 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
16270 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
16280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16290 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
162a0 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
162b0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
162c0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
162d0 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  (SQLiteVirtualTa
162e0 62 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29  bleCursor).Name)
162f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
16300 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
16310 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
16320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16360 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16370 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
16390 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
163a0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
163b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
163c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
163d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
163e0 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
163f0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
16400 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
16410 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
16420 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
16430 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
16440 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e  f="Dispose()" />
16450 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
16460 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
16470 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20   being called.. 
16480 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
16490 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
164a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
164b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
164c0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
164d0 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
164e0 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
164f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16500 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
16510 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
16520 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16530 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
16540 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
16550 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
16560 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
16570 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16590 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
165a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
165b0 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
165c0 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
165d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
165e0 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
165f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
16610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16620 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
16630 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
16660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16670 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
16680 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
16690 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
166a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
166b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
166d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
166e0 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
166f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
16700 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
16710 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
16720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
16730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16770 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
16780 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
16790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
167a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
167b0 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
167c0 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
167d0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
167e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
167f0 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74       ~SQLiteVirt
16800 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29  ualTableCursor()
16810 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
16820 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
16830 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
16840 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
16850 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
16860 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
16870 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168c0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
168d0 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
168e0 6e 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a  ndle Interface..
168f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16900 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
16910 69 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73  interface repres
16920 65 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61  ents a native ha
16930 6e 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79  ndle provided by
16940 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
16950 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72  ..    /// librar
16960 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
16970 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
16980 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51  ic interface ISQ
16990 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
169a0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
169b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
169c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
169d0 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61  native handle va
169e0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
169f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16a00 20 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74        IntPtr Nat
16a10 69 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b  iveHandle { get;
16a20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23   }..    }..    #
16a30 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
16a40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16a90 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
16aa0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
16ab0 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   Interface..    
16ac0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16ad0 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65     /// This inte
16ae0 72 66 61 63 65 20 72 65 70 72 65 73 65 6e 74 73  rface represents
16af0 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
16b00 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
16b10 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20  written in..    
16b20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63 6f 64 65  /// managed code
16b30 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
16b40 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
16b50 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c  c interface ISQL
16b60 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
16b70 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
16b80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16b90 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
16ba0 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20  rns non-zero if 
16bb0 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74  the schema for t
16bc0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
16bd0 20 68 61 73 20 62 65 65 6e 0d 0a 20 20 20 20 20   has been..     
16be0 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 65 64 2e     /// declared.
16bf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16c00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16c10 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65 64 20    bool Declared 
16c20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20  { get; }....    
16c30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16c80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
16c90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16ca0 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e 61  / Returns the na
16cb0 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
16cc0 20 61 73 20 69 74 20 77 61 73 20 72 65 67 69 73   as it was regis
16cd0 74 65 72 65 64 20 77 69 74 68 20 74 68 65 20 53  tered with the S
16ce0 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f  QLite..        /
16cf0 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  // core library.
16d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16d10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16d20 20 20 73 74 72 69 6e 67 20 4e 61 6d 65 20 7b 20    string Name { 
16d30 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20  get; }....      
16d40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16d90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16da0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16db0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
16dc0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
16dd0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
16de0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
16df0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
16e00 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
16e10 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
16e20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16e40 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
16e50 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
16e60 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
16e70 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
16e80 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
16e90 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
16ea0 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
16eb0 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
16ec0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
16ed0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16ef0 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
16f00 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
16f10 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75  /// The native u
16f20 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72  ser-data pointer
16f30 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
16f40 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73   this module, as
16f50 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20   it was..       
16f60 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f   /// provided to
16f70 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
16f80 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68   library when th
16f90 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
16fa0 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
16fb0 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65    /// was create
16fc0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
16fd0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
16fe0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
16ff0 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a  e="arguments">..
17000 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
17010 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74  module name, dat
17020 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69 72 74  abase name, virt
17030 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20  ual table name, 
17040 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20  and all other.. 
17050 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d         /// argum
17060 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74  ents passed to t
17070 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
17080 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
17090 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
170a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
170b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
170c0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
170d0 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
170e0 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
170f0 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
17100 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
17110 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
17120 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
17130 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
17140 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17150 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  nce associated w
17160 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
17170 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
17180 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
17190 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
171a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
171b0 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
171c0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61       /// Upon fa
171d0 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
171e0 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
171f0 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
17200 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20  n an error..    
17210 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e      /// message.
17220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17230 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17240 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17250 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17260 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17270 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17280 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17290 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
172a0 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74  eErrorCode Creat
172b0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
172c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
172d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a   connection,  /*
172e0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
172f0 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65      IntPtr pClie
17300 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20  ntData,         
17310 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17320 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
17330 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20   arguments,     
17340 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
17350 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
17360 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
17370 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74  le table, /* out
17380 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
17390 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
173a0 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  r              /
173b0 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
173c0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
173d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
173e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17420 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
17430 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17440 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
17450 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
17460 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
17470 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
17480 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
17490 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
174a0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
174b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
174c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
174d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
174e0 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
174f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17500 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
17510 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  nection" /> obje
17520 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
17530 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
17540 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72       /// the vir
17550 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
17560 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17570 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17580 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
17590 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
175a0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
175b0 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e  e user-data poin
175c0 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77  ter associated w
175d0 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c  ith this module,
175e0 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20   as it was..    
175f0 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64      /// provided
17600 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
17610 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
17620 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   the native modu
17630 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  le instance..   
17640 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65       /// was cre
17650 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
17660 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
17670 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
17680 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22  name="arguments"
17690 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
176a0 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20  he module name, 
176b0 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76  database name, v
176c0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d  irtual table nam
176d0 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72  e, and all other
176e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
176f0 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74  guments passed t
17700 6f 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  o the CREATE VIR
17710 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
17720 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
17730 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
17740 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
17750 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
17760 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
17770 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
17780 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
17790 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
177a0 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
177b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
177c0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
177d0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
177e0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
177f0 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
17800 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
17810 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
17820 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17830 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17840 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
17850 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
17860 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
17870 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
17880 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
17890 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20  tain an error.. 
178a0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61         /// messa
178b0 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
178c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
178d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
178e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
178f0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
17900 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
17910 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
17920 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
17930 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f  LiteErrorCode Co
17940 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
17950 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
17960 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  tion connection,
17970 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17980 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
17990 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20  ClientData,     
179a0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
179b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
179c0 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20  ng[] arguments, 
179d0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
179e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
179f0 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61  ref SQLiteVirtua
17a00 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
17a10 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
17a20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
17a30 65 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20  error           
17a40 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
17a50 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17a60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17ab0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17ac0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17ad0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17ae0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
17af0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
17b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17b10 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
17b20 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
17b30 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
17b40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17b50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17b60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17b70 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
17b80 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
17b90 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
17ba0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
17bb0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
17bc0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
17bd0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
17be0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
17bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17c00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17c10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17c20 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
17c30 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
17c40 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
17c50 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17c60 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61  nce containing a
17c70 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ll the..        
17c80 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65  /// data for the
17c90 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70   inputs and outp
17ca0 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20  uts relating to 
17cb0 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e  index selection.
17cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17cd0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17ce0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17cf0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17d00 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17d10 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17d20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17d30 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
17d40 65 45 72 72 6f 72 43 6f 64 65 20 42 65 73 74 49  eErrorCode BestI
17d50 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
17d60 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
17d70 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
17d80 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
17d90 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69     SQLiteIndex i
17da0 6e 64 65 78 20 20 20 20 20 20 20 20 20 2f 2a 20  ndex         /* 
17db0 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20  in, out */..    
17dc0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
17dd0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17e20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
17e30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17e40 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
17e50 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
17e60 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
17e70 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
17e80 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
17e90 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
17ea0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
17eb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17ec0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17ed0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17ee0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
17ef0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17f00 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17f10 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
17f20 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
17f30 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
17f40 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
17f50 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
17f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17f70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17f80 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
17f90 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
17fa0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
17fb0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
17fc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
17fd0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
17fe0 72 72 6f 72 43 6f 64 65 20 44 69 73 63 6f 6e 6e  rrorCode Disconn
17ff0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
18000 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
18010 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
18020 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18030 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
18080 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18090 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
180a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
180b0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
180c0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
180d0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
180e0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
180f0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
18100 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d  e.xDestroy" /> m
18110 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
18120 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18130 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18140 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
18150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18160 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
18170 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
18180 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
18190 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
181a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
181b0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
181c0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
181d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
181e0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
181f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
18200 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
18210 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
18220 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
18230 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
18240 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44  QLiteErrorCode D
18250 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
18260 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
18270 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
18280 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18290 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
182a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182d0 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
182f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18300 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18310 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
18320 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
18330 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
18340 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
18350 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
18360 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
18370 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
18380 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18390 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
183a0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
183b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
183c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
183d0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
183e0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
183f0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
18400 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
18410 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
18420 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
18430 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
18440 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18450 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
18460 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
18470 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
18480 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
18490 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
184a0 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
184b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
184c0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
184d0 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
184e0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
184f0 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
18500 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 6e 65   /// with the ne
18510 77 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75  wly opened virtu
18520 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 2e  al table cursor.
18530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18540 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
18550 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
18560 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
18570 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
18580 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
18590 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
185a0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
185b0 65 45 72 72 6f 72 43 6f 64 65 20 4f 70 65 6e 28  eErrorCode Open(
185c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
185d0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
185e0 20 74 61 62 6c 65 2c 20 20 20 20 20 20 20 20 20   table,         
185f0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
18600 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
18610 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18620 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 6f  rsor cursor /* o
18630 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
18640 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
18650 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
186a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
186b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
186c0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
186d0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
186e0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
186f0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
18700 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
18710 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
18720 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
18730 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18740 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18750 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
18760 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18770 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
18780 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
18790 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
187a0 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
187b0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
187c0 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
187d0 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
187e0 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
187f0 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
18800 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
18810 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18820 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18830 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
18840 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
18850 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
18860 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
18870 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
18880 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
18890 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d 0a 20 20  rCode Close(..  
188a0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
188b0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
188c0 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20  or cursor /* in 
188d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
188e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
188f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18930 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
18940 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18950 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
18960 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
18970 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
18980 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18990 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
189a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
189b0 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  .xFilter" /> met
189c0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
189d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
189e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
189f0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18a00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18a10 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18a20 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18a30 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
18a40 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
18a50 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
18a60 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
18a70 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
18a80 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
18a90 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
18aa0 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
18ab0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18ad0 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
18ae0 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
18af0 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
18b00 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
18b10 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
18b20 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
18b30 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18b40 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18b50 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
18b60 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
18b70 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
18b80 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
18b90 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
18ba0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18bb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18bc0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18bd0 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
18be0 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
18bf0 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
18c00 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
18c10 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
18c20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
18c30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
18c40 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
18c50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
18c60 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
18c70 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
18c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
18c90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18ca0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18cb0 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20   Filter(..      
18cc0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
18cd0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
18ce0 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  ursor, /* in */.
18cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
18d00 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 20 20 20   indexNumber,   
18d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
18d20 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18d30 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
18d40 53 74 72 69 6e 67 2c 20 20 20 20 20 20 20 20 20  String,         
18d50 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
18d60 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
18d70 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 20  eValue[] values 
18d80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
18d90 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18da0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
18db0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18e00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18e20 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
18e30 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
18e40 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
18e50 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
18e60 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
18e70 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74  le.xNext" /> met
18e80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
18e90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18eb0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18ed0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18ee0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18ef0 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
18f00 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
18f10 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
18f20 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
18f30 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
18f40 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
18f50 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
18f60 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
18f70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18f80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
18f90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18fa0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
18fb0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
18fc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
18fd0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
18fe0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
18ff0 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20 20 20 20  ode Next(..     
19000 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
19010 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
19020 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d  cursor /* in */.
19030 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
19040 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19090 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
190a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
190b0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
190c0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
190d0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
190e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
190f0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
19100 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
19110 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
19120 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
19130 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
19140 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19150 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
19160 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
19170 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
19180 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
19190 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
191a0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
191b0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
191c0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
191d0 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
191e0 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
191f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
19200 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
19210 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19220 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
19230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
19240 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d 6f 72  n-zero if no mor
19250 65 20 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c  e rows are avail
19260 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68 65 72  able; zero other
19270 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  wise...        /
19280 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
19290 20 20 20 20 20 20 20 62 6f 6f 6c 20 45 6f 66 28         bool Eof(
192a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
192b0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
192c0 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a  Cursor cursor /*
192d0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
192e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
192f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19330 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19340 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
19350 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19360 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
19370 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
19380 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
19390 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
193a0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
193b0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
193c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
193d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
193e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
193f0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
19400 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
19410 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19420 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
19430 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
19440 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
19450 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
19460 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
19470 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
19480 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
19490 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
194a0 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
194b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
194c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
194d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
194e0 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20  ntext">..       
194f0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
19500 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 74 65 78  ef="SQLiteContex
19510 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  t" /> object ins
19520 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64  tance to be used
19530 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   for..        //
19540 2f 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20  / returning the 
19550 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e  specified column
19560 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 53 51   value to the SQ
19570 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
19580 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
19590 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
195a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
195b0 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20  e="index">..    
195c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72 6f      /// The zero
195d0 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63 6f 72  -based index cor
195e0 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68  responding to th
195f0 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69 6e  e column contain
19600 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
19610 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62 65   /// value to be
19620 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
19630 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
19650 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
19660 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
19670 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
19680 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
19690 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
196a0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
196b0 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20  Code Column(..  
196c0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
196d0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
196e0 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e  or cursor, /* in
196f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19700 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 63   SQLiteContext c
19710 6f 6e 74 65 78 74 2c 20 20 20 20 20 20 20 20 20  ontext,         
19720 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
19730 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
19740 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  x               
19750 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
19760 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
19770 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
197d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
197e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
197f0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
19800 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
19810 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19820 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
19830 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
19840 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f  xRowId" /> metho
19850 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
19860 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
19870 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19880 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
19890 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
198a0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
198b0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
198c0 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
198d0 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
198e0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
198f0 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
19900 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
19910 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
19920 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
19930 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
19940 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19950 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19960 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
19970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
19980 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
19990 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
199a0 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
199b0 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65  ntain the unique
199c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
199d0 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69  teger row identi
199e0 66 69 65 72 20 66 6f 72 20 74 68 65 20 63 75 72  fier for the cur
199f0 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74 68 65  rent row for the
19a00 20 73 70 65 63 69 66 69 65 64 20 63 75 72 73 6f   specified curso
19a10 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
19a20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19a30 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
19a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
19a50 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
19a60 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
19a70 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
19a80 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
19a90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 77  iteErrorCode Row
19aa0 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
19ab0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
19ac0 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
19ad0 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19ae0 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
19af0 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
19b00 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
19b10 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
19b20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
19b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19b80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19b90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19ba0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
19bb0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
19bc0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
19bd0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
19be0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
19bf0 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
19c00 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
19c10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
19c20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19c30 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
19c40 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
19c50 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
19c60 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
19c70 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
19c80 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
19c90 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
19ca0 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
19cb0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
19cc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19cd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19ce0 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
19cf0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
19d00 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
19d10 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e  "SQLiteValue" />
19d20 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19d30 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  s containing..  
19d40 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65        /// the ne
19d50 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63 6f  w or modified co
19d60 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66 20  lumn values, if 
19d70 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  any...        //
19d80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19d90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19da0 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20  ame="rowId">..  
19db0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
19dc0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
19dd0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
19de0 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
19df0 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20  in the unique.. 
19e00 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67         /// integ
19e10 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65  er row identifie
19e20 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20 74 68  r for the row th
19e30 61 74 20 77 61 73 20 69 6e 73 65 72 74 65 64 2c  at was inserted,
19e40 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
19e50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
19e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
19e70 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
19e80 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
19e90 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
19ea0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19eb0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19ec0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
19ed0 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20  de Update(..    
19ee0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
19ef0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
19f00 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19f10 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
19f20 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c 20 20 20  lue[] values,   
19f30 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
19f40 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
19f50 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
19f60 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
19f70 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
19f80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19fe0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19ff0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1a000 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
1a010 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
1a020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1a030 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
1a040 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
1a050 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1a060 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1a070 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a080 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
1a090 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
1a0a0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1a0b0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1a0c0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1a0d0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1a0e0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
1a0f0 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
1a100 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a110 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1a130 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a140 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1a150 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1a160 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1a170 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a180 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a190 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a 20 20 20  Code Begin(..   
1a1a0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
1a1b0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
1a1c0 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
1a1d0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1a1e0 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1a240 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1a250 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1a260 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1a270 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1a280 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1a290 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1a2a0 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
1a2b0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1a2c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1a2d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1a2e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1a2f0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1a300 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1a310 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1a320 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
1a330 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1a340 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1a350 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
1a360 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1a370 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1a380 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1a390 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1a3a0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1a3b0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1a3c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a3d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1a3e0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1a3f0 64 65 20 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  de Sync(..      
1a400 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1a410 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
1a420 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1a430 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1a440 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a490 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1a4a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1a4b0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1a4c0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1a4d0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1a4e0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1a4f0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1a500 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f  odule.xCommit" /
1a510 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1a520 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1a530 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a540 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
1a550 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1a560 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1a570 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1a580 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
1a590 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1a5a0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
1a5b0 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
1a5c0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
1a5d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1a5e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1a5f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1a600 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1a610 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1a620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a630 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1a640 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1a650 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  e Commit(..     
1a660 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
1a670 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
1a680 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1a690 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1a6a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a6f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1a700 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a710 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1a720 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1a730 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1a740 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1a750 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1a760 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
1a770 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1a780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1a790 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a7a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
1a7b0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
1a7c0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1a7d0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1a7e0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1a7f0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1a800 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
1a810 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
1a820 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a830 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1a850 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a860 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1a870 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1a880 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1a890 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a8a0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a8b0 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 28 0d 0a  Code Rollback(..
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1a8d0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1a8e0 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
1a8f0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1a900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1a960 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1a970 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1a980 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1a990 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1a9a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1a9b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1a9c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
1a9d0 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
1a9e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a9f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1aa00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1aa10 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1aa20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1aa30 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1aa40 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1aa50 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1aa60 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1aa70 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1aa80 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1aa90 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1aaa0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1aab0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1aac0 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e  me="argumentCoun
1aad0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1aae0 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   The number of a
1aaf0 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20  rguments to the 
1ab00 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73  function being s
1ab10 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20  ought...        
1ab20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ab30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ab40 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
1ab50 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1ab60 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74  ame of the funct
1ab70 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74  ion being sought
1ab80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ab90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1aba0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1abb0 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20  ="function">..  
1abc0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1abd0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1abe0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1abf0 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1ac00 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1ac10 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
1ac20 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f  QLiteFunction" /
1ac30 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1ac40 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  e responsible fo
1ac50 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  r..        /// i
1ac60 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20  mplementing the 
1ac70 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
1ac80 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1ac90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1aca0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1acb0 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
1acc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1acd0 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
1ace0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1acf0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1ad00 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
1ad10 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
1ad20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
1ad30 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
1ad40 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  h..        /// <
1ad50 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66  paramref name="f
1ad60 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20  unction" />...  
1ad70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ad80 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ad90 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1ada0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1adb0 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1adc0 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 66 6f   function was fo
1add0 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77  und; zero otherw
1ade0 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ise...        //
1adf0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1ae00 20 20 20 20 20 20 62 6f 6f 6c 20 46 69 6e 64 46        bool FindF
1ae10 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
1ae20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1ae30 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1ae40 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1ae50 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
1ae60 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20 20 20 20  umentCount,     
1ae70 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
1ae80 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1ae90 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20 20 20  ng name,        
1aea0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1aeb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1aec0 65 66 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  ef SQLiteFunctio
1aed0 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a 20 6f  n function, /* o
1aee0 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1aef0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
1af00 6c 69 65 6e 74 44 61 74 61 20 20 20 20 20 20 20  lientData       
1af10 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
1af20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1af30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1af40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1af80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1af90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1afa0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1afb0 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1afc0 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1afd0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1afe0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1aff0 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22  eModule.xRename"
1b000 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1b010 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b020 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b030 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1b040 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1b050 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1b060 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1b070 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1b080 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1b090 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1b0a0 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1b0b0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1b0c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1b0d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b0e0 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e 61 6d  ram name="newNam
1b0f0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1b100 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f   The new name fo
1b110 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1b120 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1b130 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1b140 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1b150 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1b160 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1b170 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1b180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1b190 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1b1a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
1b1b0 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
1b1c0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1b1d0 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
1b1e0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1b1f0 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77 4e 61      string newNa
1b200 6d 65 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  me            /*
1b210 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1b220 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1b230 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
1b270 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b280 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1b290 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b2a0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1b2b0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1b2c0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1b2d0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1b2e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1b2f0 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22  dule.xSavepoint"
1b300 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1b310 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b320 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b330 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1b340 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1b350 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1b360 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1b370 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1b380 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1b390 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1b3a0 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1b3b0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1b3c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1b3d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b3e0 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f  ram name="savepo
1b3f0 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
1b400 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e  // This is an in
1b410 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1b420 20 75 6e 64 65 72 20 77 68 69 63 68 20 74 68 65   under which the
1b430 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61   the current sta
1b440 74 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f  te of..        /
1b450 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1b460 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73  able should be s
1b470 61 76 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aved...        /
1b480 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1b490 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1b4a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1b4b0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1b4c0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1b4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1b4e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1b4f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1b500 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
1b510 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1b520 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1b530 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
1b540 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76 65          int save
1b550 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20 20  point           
1b560 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1b570 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1b580 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b5d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1b5e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b5f0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1b600 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1b610 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1b620 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1b630 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1b640 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
1b650 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1b660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1b670 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1b680 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1b690 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
1b6a0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1b6b0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
1b6c0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
1b6d0 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
1b6e0 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
1b6f0 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
1b700 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1b710 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1b720 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b730 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65  param name="save
1b740 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
1b750 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20   /// This is an 
1b760 69 6e 74 65 67 65 72 20 75 73 65 64 20 74 6f 20  integer used to 
1b770 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 61 6e  indicate that an
1b780 79 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77  y saved states w
1b790 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ith an..        
1b7a0 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65 72 20 67  /// identifier g
1b7b0 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65  reater than or e
1b7c0 71 75 61 6c 20 74 6f 20 74 68 69 73 20 73 68 6f  qual to this sho
1b7d0 75 6c 64 20 62 65 20 64 65 6c 65 74 65 64 20 62  uld be deleted b
1b7e0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
1b7f0 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
1b800 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b810 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1b820 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1b830 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1b840 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1b850 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1b860 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1b870 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1b880 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6c 65  teErrorCode Rele
1b890 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
1b8a0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1b8b0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
1b8c0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b8d0 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
1b8e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
1b8f0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b900 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1b910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b950 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b960 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b980 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1b990 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1b9a0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1b9b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1b9c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1b9d0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
1b9e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1b9f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1ba00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1ba10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1ba20 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1ba30 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1ba40 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1ba50 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
1ba60 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1ba70 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1ba80 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
1ba90 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1baa0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1bab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1bac0 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69  am name="savepoi
1bad0 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
1bae0 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74  / This is an int
1baf0 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1bb00 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20  used to specify 
1bb10 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65 64  a specific saved
1bb20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1bb30 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ate for the virt
1bb40 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69 74  ual table for it
1bb50 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73 65   to restore itse
1bb60 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69 63  lf back to, whic
1bb70 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  h..        /// s
1bb80 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 20  hould also have 
1bb90 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64 65  the effect of de
1bba0 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65 64  leting all saved
1bbb0 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1bbc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
1bbd0 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1bbe0 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 69  greater than thi
1bbf0 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20  s one...        
1bc00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1bc10 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1bc20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1bc30 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1bc40 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1bc50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1bc60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1bc70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1bc80 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20   RollbackTo(..  
1bc90 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1bca0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1bcb0 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
1bcc0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61            int sa
1bcd0 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20  vepoint         
1bce0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1bcf0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20            );..  
1bd00 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1bd10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1bd70 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d 6f  egion SQLiteMemo
1bd80 72 79 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  ry Static Class.
1bd90 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1bda0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
1bdb0 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20   class contains 
1bdc0 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74  static methods t
1bdd0 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20  hat are used to 
1bde0 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20 20 20 2f  allocate,..    /
1bdf0 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65 2c 20 61  // manipulate, a
1be00 6e 64 20 66 72 65 65 20 6e 61 74 69 76 65 20 6d  nd free native m
1be10 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64 20 62  emory provided b
1be20 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
1be30 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1be40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1be50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1be60 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65  tic class SQLite
1be70 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d 0a 20  Memory..    {.. 
1be80 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
1be90 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69 66  rivate Data..#if
1bea0 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1beb0 54 45 53 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  TES..        ///
1bec0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1bed0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 62 6a      /// This obj
1bee0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
1bef0 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72 6f 6e  used to synchron
1bf00 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74 68  ize access to th
1bf10 65 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  e other..       
1bf20 20 2f 2f 2f 20 73 74 61 74 69 63 20 66 69 65 6c   /// static fiel
1bf30 64 73 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ds of this class
1bf40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1bf50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bf60 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1bf70 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  c object syncRoo
1bf80 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
1bf90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfe0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1bff0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1c000 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74         /// The t
1c010 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f  otal number of o
1c020 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1c030 79 20 62 79 74 65 73 20 61 6c 6c 6f 63 61 74 65  y bytes allocate
1c040 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20  d by this..     
1c050 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 75 73 69     /// class usi
1c060 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ng the SQLite co
1c070 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1c080 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1c090 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
1c0a0 76 61 74 65 20 73 74 61 74 69 63 20 75 6c 6f 6e  vate static ulon
1c0b0 67 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  g bytesAllocated
1c0c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1c0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c120 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1c130 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1c140 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
1c150 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d   outstanding mem
1c160 6f 72 79 20 62 79 74 65 73 20 65 76 65 72 20 61  ory bytes ever a
1c170 6c 6c 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20  llocated by..   
1c180 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c       /// this cl
1c190 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 53 51  ass using the SQ
1c1a0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1c1b0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1c1c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1c1d0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1c1e0 69 63 20 75 6c 6f 6e 67 20 6d 61 78 69 6d 75 6d  ic ulong maximum
1c1f0 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  BytesAllocated;.
1c200 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1c210 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1c220 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
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 0d 0a  //////////////..
1c270 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1c280 6e 20 4d 65 6d 6f 72 79 20 54 72 61 63 6b 69 6e  n Memory Trackin
1c290 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  g Helper Methods
1c2a0 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f  ..#if TRACK_MEMO
1c2b0 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20  RY_BYTES..      
1c2c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c2d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  .        /// Att
1c2e0 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69  empts to determi
1c2f0 6e 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  ne the size of t
1c300 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
1c310 6f 72 79 20 62 6c 6f 63 6b 2e 20 20 49 66 0d 0a  ory block.  If..
1c320 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1c330 3c 73 65 65 20 63 72 65 66 3d 22 53 69 7a 65 36  <see cref="Size6
1c340 34 22 20 2f 3e 20 6d 65 74 68 6f 64 20 63 61 6e  4" /> method can
1c350 20 62 65 20 75 73 65 64 2c 20 74 68 65 20 72 65   be used, the re
1c360 74 75 72 6e 65 64 20 76 61 6c 75 65 0d 0a 20 20  turned value..  
1c370 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65        /// may be
1c380 20 6c 61 72 67 65 72 20 74 68 61 6e 20 3c 73 65   larger than <se
1c390 65 20 63 72 65 66 3d 22 49 6e 74 33 32 2e 4d 61  e cref="Int32.Ma
1c3a0 78 56 61 6c 75 65 22 20 2f 3e 2e 20 20 41 20 6d  xValue" />.  A m
1c3b0 65 73 73 61 67 65 20 6d 61 79 0d 0a 20 20 20 20  essage may..    
1c3c0 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 6e 74 20      /// be sent 
1c3d0 74 6f 20 74 68 65 20 6c 6f 67 67 69 6e 67 20 73  to the logging s
1c3e0 75 62 73 79 73 74 65 6d 20 69 66 20 61 6e 20 65  ubsystem if an e
1c3f0 72 72 6f 72 20 69 73 20 65 6e 63 6f 75 6e 74 65  rror is encounte
1c400 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  red...        //
1c410 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1c420 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1c430 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 3e   name="pMemory">
1c440 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c450 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1c460 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 62   to the memory b
1c470 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20  lock previously 
1c480 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 0d 0a 20  obtained from.. 
1c490 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c         /// the <
1c4a0 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61  see cref="Alloca
1c4b0 74 65 22 20 2f 3e 2c 20 3c 73 65 65 20 63 72 65  te" />, <see cre
1c4c0 66 3d 22 41 6c 6c 6f 63 61 74 65 36 34 22 20 2f  f="Allocate64" /
1c4d0 3e 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  >,..        /// 
1c4e0 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
1c4f0 61 74 65 55 6e 74 72 61 63 6b 65 64 22 20 2f 3e  ateUntracked" />
1c500 2c 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  , or..        //
1c510 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c  / <see cref="All
1c520 6f 63 61 74 65 36 34 55 6e 74 72 61 63 6b 65 64  ocate64Untracked
1c530 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 6f 72 20  " /> methods or 
1c540 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 74 68  directly from th
1c550 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  e..        /// S
1c560 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1c570 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
1c580 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1c590 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1c5a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c5b0 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70  e size of the sp
1c5c0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62  ecified memory b
1c5d0 6c 6f 63 6b 20 2d 4f 52 2d 20 7a 65 72 6f 20 69  lock -OR- zero i
1c5e0 66 20 74 68 65 20 33 32 2d 62 69 74 0d 0a 20 20  f the 32-bit..  
1c5f0 20 20 20 20 20 20 2f 2f 2f 20 73 69 67 6e 65 64        /// signed
1c600 20 76 61 6c 75 65 20 72 65 70 6f 72 74 65 64 20   value reported 
1c610 66 72 6f 6d 20 74 68 65 20 6e 61 74 69 76 65 20  from the native 
1c620 41 50 49 20 77 61 73 20 6c 65 73 73 20 74 68 61  API was less tha
1c630 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20  n zero...       
1c640 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1c650 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1c660 20 73 74 61 74 69 63 20 75 6c 6f 6e 67 20 47 65   static ulong Ge
1c670 74 42 6c 6f 63 6b 53 69 7a 65 28 0d 0a 20 20 20  tBlockSize(..   
1c680 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
1c690 70 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20  pMemory..       
1c6a0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1c6b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75  {..            u
1c6c0 6c 6f 6e 67 20 75 6c 6f 6e 67 53 69 7a 65 20 3d  long ulongSize =
1c6d0 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
1c6e0 20 20 20 69 66 20 28 43 61 6e 55 73 65 53 69 7a     if (CanUseSiz
1c6f0 65 36 34 28 29 29 0d 0a 20 20 20 20 20 20 20 20  e64())..        
1c700 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c710 20 20 20 20 20 20 20 75 6c 6f 6e 67 53 69 7a 65         ulongSize
1c720 20 3d 20 53 69 7a 65 36 34 28 70 4d 65 6d 6f 72   = Size64(pMemor
1c730 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
1c740 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c750 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1c760 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c770 20 20 20 20 20 69 6e 74 20 69 6e 74 53 69 7a 65       int intSize
1c780 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79 29   = Size(pMemory)
1c790 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1c7a0 20 20 20 20 20 69 66 20 28 69 6e 74 53 69 7a 65       if (intSize
1c7b0 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
1c7c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6c                ul
1c7e0 6f 6e 67 53 69 7a 65 20 3d 20 28 75 6c 6f 6e 67  ongSize = (ulong
1c7f0 29 69 6e 74 53 69 7a 65 3b 0d 0a 20 20 20 20 20  )intSize;..     
1c800 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1c810 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1c820 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
1c830 20 28 69 6e 74 53 69 7a 65 20 3c 20 30 29 0d 0a   (intSize < 0)..
1c840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c850 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c860 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67         SQLiteLog
1c870 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69  .LogMessage(SQLi
1c880 74 65 45 72 72 6f 72 43 6f 64 65 2e 57 61 72 6e  teErrorCode.Warn
1c890 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
1c8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
1c8b0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1c8c0 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
1c8d0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1c8e0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1c8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70                "p
1c900 6f 69 6e 74 65 72 20 7b 30 7d 20 73 69 7a 65 20  ointer {0} size 
1c910 7b 31 7d 20 61 70 70 65 61 72 73 20 74 6f 20 62  {1} appears to b
1c920 65 20 6e 65 67 61 74 69 76 65 3a 20 7b 32 7d 22  e negative: {2}"
1c930 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1c940 20 20 20 20 20 20 20 20 20 20 20 70 4d 65 6d 6f             pMemo
1c950 72 79 2c 20 69 6e 74 53 69 7a 65 2c 0d 0a 23 69  ry, intSize,..#i
1c960 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c970 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c990 20 20 20 20 20 20 45 6e 76 69 72 6f 6e 6d 65 6e        Environmen
1c9a0 74 2e 53 74 61 63 6b 54 72 61 63 65 0d 0a 23 65  t.StackTrace..#e
1c9b0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1c9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c               nul
1c9d0 6c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  l..#endif..     
1c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
1c9f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1ca00 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1ca10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1ca20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ca30 72 6e 20 75 6c 6f 6e 67 53 69 7a 65 3b 0d 0a 20  rn ulongSize;.. 
1ca40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ca50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ca60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1caa0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1cab0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1cac0 2f 20 41 64 6a 75 73 74 73 20 74 68 65 20 74 6f  / Adjusts the to
1cad0 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 28 74  tal number of (t
1cae0 72 61 63 6b 65 64 29 20 62 79 74 65 73 20 74 68  racked) bytes th
1caf0 61 74 20 61 72 65 20 63 75 72 72 65 6e 74 6c 79  at are currently
1cb00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
1cb10 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65 20 61  nsidered to be a
1cb20 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68 69 73  llocated by this
1cb30 20 63 6c 61 73 73 2e 20 20 54 68 65 20 74 6f 74   class.  The tot
1cb40 61 6c 20 6e 75 6d 62 65 72 20 69 73 0d 0a 20 20  al number is..  
1cb50 20 20 20 20 20 20 2f 2f 2f 20 69 6e 63 72 65 61        /// increa
1cb60 73 65 64 20 62 79 20 74 68 65 20 74 6f 74 61 6c  sed by the total
1cb70 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6d 65 6d   size of the mem
1cb80 6f 72 79 20 62 6c 6f 63 6b 20 70 6f 69 6e 74 65  ory block pointe
1cb90 64 20 74 6f 20 62 79 0d 0a 20 20 20 20 20 20 20  d to by..       
1cba0 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
1cbb0 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 20 2f 3e  ame="pMemory" />
1cbc0 2e 20 20 49 66 20 74 68 65 20 6e 65 77 20 74 6f  .  If the new to
1cbd0 74 61 6c 20 6e 75 6d 62 65 72 20 65 78 63 65 65  tal number excee
1cbe0 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
1cbf0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 73  the previously s
1cc00 65 65 6e 20 6d 61 78 69 6d 75 6d 2c 20 74 68 65  een maximum, the
1cc10 20 6d 61 78 69 6d 75 6d 20 77 69 6c 6c 20 62 65   maximum will be
1cc20 20 72 65 73 65 74 2e 0d 0a 20 20 20 20 20 20 20   reset...       
1cc30 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1cc40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1cc50 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72  ram name="pMemor
1cc60 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
1cc70 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   A native pointe
1cc80 72 20 74 6f 20 6e 65 77 6c 79 20 61 6c 6c 6f 63  r to newly alloc
1cc90 61 74 65 64 20 6d 65 6d 6f 72 79 2e 0d 0a 20 20  ated memory...  
1cca0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ccb0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
1ccc0 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
1ccd0 4d 65 6d 6f 72 79 57 61 73 41 6c 6c 6f 63 61 74  MemoryWasAllocat
1cce0 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed(..           
1ccf0 20 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 0d   IntPtr pMemory.
1cd00 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1cd10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1cd20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d 6f         if (pMemo
1cd30 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ry != IntPtr.Zer
1cd40 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1cd50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1cd60 20 20 20 75 6c 6f 6e 67 20 62 6c 6f 63 6b 53 69     ulong blockSi
1cd70 7a 65 20 3d 20 47 65 74 42 6c 6f 63 6b 53 69 7a  ze = GetBlockSiz
1cd80 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20  e(pMemory);.... 
1cd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1cda0 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30  f (blockSize > 0
1cdb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1cdc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1cdd0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1cde0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
1cdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1ce00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ce10 20 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41            bytesA
1ce20 6c 6c 6f 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63  llocated += bloc
1ce30 6b 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  kSize;....      
1ce40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce50 20 20 69 66 20 28 62 79 74 65 73 41 6c 6c 6f 63    if (bytesAlloc
1ce60 61 74 65 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79  ated > maximumBy
1ce70 74 65 73 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20  tesAllocated).. 
1ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce90 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 69 6d             maxim
1cea0 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  umBytesAllocated
1ceb0 20 3d 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65   = bytesAllocate
1cec0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
1ced0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1cee0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1cef0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1cf00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1cf10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1cf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1cf60 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1cf70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1cf80 41 64 6a 75 73 74 73 20 74 68 65 20 74 6f 74 61  Adjusts the tota
1cf90 6c 20 6e 75 6d 62 65 72 20 6f 66 20 28 74 72 61  l number of (tra
1cfa0 63 6b 65 64 29 20 62 79 74 65 73 20 74 68 61 74  cked) bytes that
1cfb0 20 61 72 65 20 63 75 72 72 65 6e 74 6c 79 0d 0a   are currently..
1cfc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73          /// cons
1cfd0 69 64 65 72 65 64 20 74 6f 20 62 65 20 61 6c 6c  idered to be all
1cfe0 6f 63 61 74 65 64 20 62 79 20 74 68 69 73 20 63  ocated by this c
1cff0 6c 61 73 73 2e 20 20 54 68 65 20 74 6f 74 61 6c  lass.  The total
1d000 20 6e 75 6d 62 65 72 20 69 73 0d 0a 20 20 20 20   number is..    
1d010 20 20 20 20 2f 2f 2f 20 64 65 63 72 65 61 73 65      /// decrease
1d020 64 20 62 79 20 74 68 65 20 74 6f 74 61 6c 20 73  d by the total s
1d030 69 7a 65 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72  ize of the memor
1d040 79 20 62 6c 6f 63 6b 20 70 6f 69 6e 74 65 64 20  y block pointed 
1d050 74 6f 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  to by..        /
1d060 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  // <paramref nam
1d070 65 3d 22 70 4d 65 6d 6f 72 79 22 20 2f 3e 2e 0d  e="pMemory" />..
1d080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1d090 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d0a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1d0b0 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20  ="pMemory">..   
1d0c0 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
1d0d0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6c 6c  e pointer to all
1d0e0 6f 63 61 74 65 64 20 6d 65 6d 6f 72 79 20 74 68  ocated memory th
1d0f0 61 74 20 69 73 20 67 6f 69 6e 67 20 74 6f 20 62  at is going to b
1d100 65 20 66 72 65 65 64 2e 0d 0a 20 20 20 20 20 20  e freed...      
1d110 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d120 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1d130 73 74 61 74 69 63 20 76 6f 69 64 20 4d 65 6d 6f  static void Memo
1d140 72 79 49 73 42 65 69 6e 67 46 72 65 65 64 28 0d  ryIsBeingFreed(.
1d150 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1d160 50 74 72 20 70 4d 65 6d 6f 72 79 0d 0a 20 20 20  Ptr pMemory..   
1d170 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1d180 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d190 20 20 20 69 66 20 28 70 4d 65 6d 6f 72 79 20 21     if (pMemory !
1d1a0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1d1b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
1d1d0 6c 6f 6e 67 20 62 6c 6f 63 6b 53 69 7a 65 20 3d  long blockSize =
1d1e0 20 47 65 74 42 6c 6f 63 6b 53 69 7a 65 28 70 4d   GetBlockSize(pM
1d1f0 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  emory);....     
1d200 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
1d210 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20  lockSize > 0).. 
1d220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1d230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d240 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1d250 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
1d260 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1d270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d280 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f 63        bytesAlloc
1d290 61 74 65 64 20 2d 3d 20 62 6c 6f 63 6b 53 69 7a  ated -= blockSiz
1d2a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1d2b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1d2c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1d2d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1d2e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1d2f0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1d300 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
1d310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d350 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1d360 20 23 72 65 67 69 6f 6e 20 4d 65 6d 6f 72 79 20   #region Memory 
1d370 56 65 72 73 69 6f 6e 20 48 65 6c 70 65 72 20 4d  Version Helper M
1d380 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
1d390 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d3a0 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72         /// Deter
1d3b0 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61 74  mines if the nat
1d3c0 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a  ive sqlite3_msiz
1d3d0 65 28 29 20 41 50 49 20 63 61 6e 20 62 65 20 75  e() API can be u
1d3e0 73 65 64 2c 20 62 61 73 65 64 20 6f 6e 0d 0a 20  sed, based on.. 
1d3f0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61         /// the a
1d400 76 61 69 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e  vailable version
1d410 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63   of the SQLite c
1d420 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1d430 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1d440 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1d450 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1d460 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
1d470 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
1d480 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 29 20  sqlite3_msize() 
1d490 41 50 49 20 70 72 6f 70 65 72 74 79 20 69 73 20  API property is 
1d4a0 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20  supported..     
1d4b0 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20 53 51     /// by the SQ
1d4c0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1d4d0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1d4e0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1d4f0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1d500 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 53 69  ic bool CanUseSi
1d510 7a 65 36 34 28 29 0d 0a 20 20 20 20 20 20 20 20  ze64()..        
1d520 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1d530 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f (UnsafeNativeM
1d540 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6c  ethods.sqlite3_l
1d550 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72  ibversion_number
1d560 28 29 20 3e 3d 20 33 30 30 38 30 30 37 29 0d 0a  () >= 3008007)..
1d570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d580 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a  return true;....
1d590 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d5a0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
1d5b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
1d5c0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1d5d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1d5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1d620 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d         #region M
1d630 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e  emory Allocation
1d640 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
1d650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1d660 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d670 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74  /// Allocates at
1d680 20 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69   least the speci
1d690 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62  fied number of b
1d6a0 79 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d  ytes of native m
1d6b0 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
1d6c0 2f 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74  // via the SQLit
1d6d0 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73  e core library s
1d6e0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
1d6f0 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74  function and ret
1d700 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  urns..        //
1d710 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / the resulting 
1d720 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 20  native pointer. 
1d730 20 49 66 20 74 68 65 20 54 52 41 43 4b 5f 4d 45   If the TRACK_ME
1d740 4d 4f 52 59 5f 42 59 54 45 53 20 6f 70 74 69 6f  MORY_BYTES optio
1d750 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  n..        /// w
1d760 61 73 20 65 6e 61 62 6c 65 64 20 61 74 20 63 6f  as enabled at co
1d770 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 61 64 6a 75  mpile-time, adju
1d780 73 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  sts the number o
1d790 66 20 62 79 74 65 73 20 63 75 72 72 65 6e 74 6c  f bytes currentl
1d7a0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  y..        /// a
1d7b0 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68 69 73  llocated by this
1d7c0 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
1d7d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1d7e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1d7f0 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
1d800 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d810 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
1d820 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a  s to allocate...
1d830 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1d840 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1d850 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1d860 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1d870 69 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74  ive pointer that
1d880 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f   points to a blo
1d890 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20  ck of memory of 
1d8a0 61 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20 20  at least the..  
1d8b0 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
1d8c0 69 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73  ied size -OR- <s
1d8d0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
1d8e0 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20  Zero" /> if the 
1d8f0 6d 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20  memory could..  
1d900 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65        /// not be
1d910 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20   allocated...   
1d920 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1d930 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1d940 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
1d950 72 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73  r Allocate(int s
1d960 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ize)..        {.
1d970 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1d980 50 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e  Ptr pMemory = Un
1d990 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1d9a0 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  s.sqlite3_malloc
1d9b0 28 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54  (size);....#if T
1d9c0 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45  RACK_MEMORY_BYTE
1d9d0 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  S..            M
1d9e0 65 6d 6f 72 79 57 61 73 41 6c 6c 6f 63 61 74 65  emoryWasAllocate
1d9f0 64 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 23 65 6e  d(pMemory);..#en
1da00 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
1da10 20 20 20 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72     return pMemor
1da20 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  y;..        }...
1da30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1da40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1da90 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1daa0 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73     /// Allocates
1dab0 20 61 74 20 6c 65 61 73 74 20 74 68 65 20 73 70   at least the sp
1dac0 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f  ecified number o
1dad0 66 20 62 79 74 65 73 20 6f 66 20 6e 61 74 69 76  f bytes of nativ
1dae0 65 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  e memory..      
1daf0 20 20 2f 2f 2f 20 76 69 61 20 74 68 65 20 53 51    /// via the SQ
1db00 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1db10 79 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  y sqlite3_malloc
1db20 36 34 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6e  64() function an
1db30 64 20 72 65 74 75 72 6e 73 0d 0a 20 20 20 20 20  d returns..     
1db40 20 20 20 2f 2f 2f 20 74 68 65 20 72 65 73 75 6c     /// the resul
1db50 74 69 6e 67 20 6e 61 74 69 76 65 20 70 6f 69 6e  ting native poin
1db60 74 65 72 2e 20 20 49 66 20 74 68 65 20 54 52 41  ter.  If the TRA
1db70 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 20  CK_MEMORY_BYTES 
1db80 6f 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  option..        
1db90 2f 2f 2f 20 77 61 73 20 65 6e 61 62 6c 65 64 20  /// was enabled 
1dba0 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c  at compile-time,
1dbb0 20 61 64 6a 75 73 74 73 20 74 68 65 20 6e 75 6d   adjusts the num
1dbc0 62 65 72 20 6f 66 20 62 79 74 65 73 20 63 75 72  ber of bytes cur
1dbd0 72 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 20 20  rently..        
1dbe0 2f 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20 62 79  /// allocated by
1dbf0 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
1dc00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1dc10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1dc20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
1dc30 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ize">..        /
1dc40 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
1dc50 20 62 79 74 65 73 20 74 6f 20 61 6c 6c 6f 63 61   bytes to alloca
1dc60 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  te...        ///
1dc70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1dc80 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1dc90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1dca0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1dcb0 20 74 68 61 74 20 70 6f 69 6e 74 73 20 74 6f 20   that points to 
1dcc0 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72  a block of memor
1dcd0 79 20 6f 66 20 61 74 20 6c 65 61 73 74 20 74 68  y of at least th
1dce0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
1dcf0 70 65 63 69 66 69 65 64 20 73 69 7a 65 20 2d 4f  pecified size -O
1dd00 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  R- <see cref="In
1dd10 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
1dd20 20 74 68 65 20 6d 65 6d 6f 72 79 20 63 6f 75 6c   the memory coul
1dd30 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  d..        /// n
1dd40 6f 74 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 2e  ot be allocated.
1dd50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1dd60 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1dd70 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1dd80 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 36  IntPtr Allocate6
1dd90 34 28 75 6c 6f 6e 67 20 73 69 7a 65 29 0d 0a 20  4(ulong size).. 
1dda0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1ddb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4d 65        IntPtr pMe
1ddc0 6d 6f 72 79 20 3d 20 55 6e 73 61 66 65 4e 61 74  mory = UnsafeNat
1ddd0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1dde0 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 73 69 7a 65  e3_malloc64(size
1ddf0 29 3b 0d 0a 0d 0a 23 69 66 20 54 52 41 43 4b 5f  );....#if TRACK_
1de00 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20  MEMORY_BYTES..  
1de10 20 20 20 20 20 20 20 20 20 20 4d 65 6d 6f 72 79            Memory
1de20 57 61 73 41 6c 6c 6f 63 61 74 65 64 28 70 4d 65  WasAllocated(pMe
1de30 6d 6f 72 79 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  mory);..#endif..
1de40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1de50 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b 0d 0a 20  turn pMemory;.. 
1de60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1de70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1de80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1deb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1dec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1ded0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1dee0 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74 20 6c  / Allocates at l
1def0 65 61 73 74 20 74 68 65 20 73 70 65 63 69 66 69  east the specifi
1df00 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  ed number of byt
1df10 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d 65 6d  es of native mem
1df20 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ory..        ///
1df30 20 76 69 61 20 74 68 65 20 53 51 4c 69 74 65 20   via the SQLite 
1df40 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73 71 6c  core library sql
1df50 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75  ite3_malloc() fu
1df60 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74 75 72  nction and retur
1df70 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ns..        /// 
1df80 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6e 61  the resulting na
1df90 74 69 76 65 20 70 6f 69 6e 74 65 72 20 77 69 74  tive pointer wit
1dfa0 68 6f 75 74 20 61 64 6a 75 73 74 69 6e 67 20 74  hout adjusting t
1dfb0 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d 0a 20 20  he number of..  
1dfc0 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61        /// alloca
1dfd0 74 65 64 20 62 79 74 65 73 20 63 75 72 72 65 6e  ted bytes curren
1dfe0 74 6c 79 20 74 72 61 63 6b 65 64 20 62 79 20 74  tly tracked by t
1dff0 68 69 73 20 63 6c 61 73 73 2e 20 20 54 68 69 73  his class.  This
1e000 20 69 73 20 75 73 65 66 75 6c 0d 0a 20 20 20 20   is useful..    
1e010 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 64 65 61      /// when dea
1e020 6c 69 6e 67 20 77 69 74 68 20 62 6c 6f 63 6b 73  ling with blocks
1e030 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61 74 20   of memory that 
1e040 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 64 69  will be freed di
1e050 72 65 63 74 6c 79 20 62 79 0d 0a 20 20 20 20 20  rectly by..     
1e060 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74     /// the SQLit
1e070 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
1e080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1e090 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1e0a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1e0b0 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20  ="size">..      
1e0c0 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
1e0d0 20 6f 66 20 62 79 74 65 73 20 74 6f 20 61 6c 6c   of bytes to all
1e0e0 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  ocate...        
1e0f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1e100 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1e110 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1e120 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1e130 74 65 72 20 74 68 61 74 20 70 6f 69 6e 74 73 20  ter that points 
1e140 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65  to a block of me
1e150 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73 74  mory of at least
1e160 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1e170 2f 20 73 70 65 63 69 66 69 65 64 20 73 69 7a 65  / specified size
1e180 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66 3d   -OR- <see cref=
1e190 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e  "IntPtr.Zero" />
1e1a0 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 63   if the memory c
1e1b0 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ould..        //
1e1c0 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63 61 74  / not be allocat
1e1d0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1e1e0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1e1f0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1e200 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61  ic IntPtr Alloca
1e210 74 65 55 6e 74 72 61 63 6b 65 64 28 69 6e 74 20  teUntracked(int 
1e220 73 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  size)..        {
1e230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1e240 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
1e250 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
1e260 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b 0d 0a  _malloc(size);..
1e270 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1e280 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1e290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e2d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1e2e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1e2f0 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74 20  // Allocates at 
1e300 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69 66  least the specif
1e310 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  ied number of by
1e320 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d 65  tes of native me
1e330 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
1e340 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74 65  / via the SQLite
1e350 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73 71   core library sq
1e360 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29  lite3_malloc64()
1e370 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65   function and re
1e380 74 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f  turns..        /
1e390 2f 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67  // the resulting
1e3a0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1e3b0 77 69 74 68 6f 75 74 20 61 64 6a 75 73 74 69 6e  without adjustin
1e3c0 67 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d  g the number of.
1e3d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
1e3e0 6f 63 61 74 65 64 20 62 79 74 65 73 20 63 75 72  ocated bytes cur
1e3f0 72 65 6e 74 6c 79 20 74 72 61 63 6b 65 64 20 62  rently tracked b
1e400 79 20 74 68 69 73 20 63 6c 61 73 73 2e 20 20 54  y this class.  T
1e410 68 69 73 20 69 73 20 75 73 65 66 75 6c 0d 0a 20  his is useful.. 
1e420 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20         /// when 
1e430 64 65 61 6c 69 6e 67 20 77 69 74 68 20 62 6c 6f  dealing with blo
1e440 63 6b 73 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68  cks of memory th
1e450 61 74 20 77 69 6c 6c 20 62 65 20 66 72 65 65 64  at will be freed
1e460 20 64 69 72 65 63 74 6c 79 20 62 79 0d 0a 20 20   directly by..  
1e470 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51        /// the SQ
1e480 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1e490 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1e4a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1e4b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e4c0 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20  ame="size">..   
1e4d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
1e4e0 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
1e4f0 61 6c 6c 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20  allocate...     
1e500 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1e520 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e530 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1e540 6f 69 6e 74 65 72 20 74 68 61 74 20 70 6f 69 6e  ointer that poin
1e550 74 73 20 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66  ts to a block of
1e560 20 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65   memory of at le
1e570 61 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ast the..       
1e580 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 73   /// specified s
1e590 69 7a 65 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72  ize -OR- <see cr
1e5a0 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22  ef="IntPtr.Zero"
1e5b0 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 6d 6f 72   /> if the memor
1e5c0 79 20 63 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20  y could..       
1e5d0 20 2f 2f 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f   /// not be allo
1e5e0 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
1e5f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1e600 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1e610 74 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c  tatic IntPtr All
1e620 6f 63 61 74 65 36 34 55 6e 74 72 61 63 6b 65 64  ocate64Untracked
1e630 28 75 6c 6f 6e 67 20 73 69 7a 65 29 0d 0a 20 20  (ulong size)..  
1e640 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e650 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
1e660 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1e670 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34  sqlite3_malloc64
1e680 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20  (size);..       
1e690 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1e6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1e6f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1e700 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73          /// Gets
1e710 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
1e720 20 61 63 74 75 61 6c 20 73 69 7a 65 20 6f 66 20   actual size of 
1e730 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65  the specified me
1e740 6d 6f 72 79 20 62 6c 6f 63 6b 0d 0a 20 20 20 20  mory block..    
1e750 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 77 61 73      /// that was
1e760 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
1e770 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 3c 73  ined from the <s
1e780 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1e790 65 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 20 20  e" />,..        
1e7a0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41  /// <see cref="A
1e7b0 6c 6c 6f 63 61 74 65 36 34 22 20 2f 3e 2c 20 3c  llocate64" />, <
1e7c0 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61  see cref="Alloca
1e7d0 74 65 55 6e 74 72 61 63 6b 65 64 22 20 2f 3e 2c  teUntracked" />,
1e7e0 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
1e7f0 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
1e800 63 61 74 65 36 34 55 6e 74 72 61 63 6b 65 64 22  cate64Untracked"
1e810 20 2f 3e 20 6d 65 74 68 6f 64 73 20 6f 72 20 64   /> methods or d
1e820 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 74 68 65  irectly from the
1e830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51  ..        /// SQ
1e840 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1e850 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1e860 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1e870 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e880 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a  ame="pMemory">..
1e890 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1e8a0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1e8b0 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f  o the memory blo
1e8c0 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62  ck previously ob
1e8d0 74 61 69 6e 65 64 20 66 72 6f 6d 0d 0a 20 20 20  tained from..   
1e8e0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
1e8f0 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65  e cref="Allocate
1e900 22 20 2f 3e 2c 20 3c 73 65 65 20 63 72 65 66 3d  " />, <see cref=
1e910 22 41 6c 6c 6f 63 61 74 65 36 34 22 20 2f 3e 2c  "Allocate64" />,
1e920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1e930 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1e940 65 55 6e 74 72 61 63 6b 65 64 22 20 2f 3e 2c 20  eUntracked" />, 
1e950 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
1e960 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
1e970 61 74 65 36 34 55 6e 74 72 61 63 6b 65 64 22 20  ate64Untracked" 
1e980 2f 3e 20 6d 65 74 68 6f 64 73 20 6f 72 20 64 69  /> methods or di
1e990 72 65 63 74 6c 79 20 66 72 6f 6d 20 74 68 65 0d  rectly from the.
1e9a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c  .        /// SQL
1e9b0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1e9c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e9d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1e9e0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1e9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ea00 61 63 74 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20  actual size, in 
1ea10 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6d 65  bytes, of the me
1ea20 6d 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65 63 69  mory block speci
1ea30 66 69 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20  fied via the..  
1ea40 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
1ea50 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
1ea60 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1ea70 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1ea80 63 20 73 74 61 74 69 63 20 69 6e 74 20 53 69 7a  c static int Siz
1ea90 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79  e(IntPtr pMemory
1eaa0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1eab0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1eac0 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
1ead0 61 6c 2e 43 68 65 63 6b 41 6c 69 67 6e 6d 65 6e  al.CheckAlignmen
1eae0 74 28 22 53 69 7a 65 22 2c 20 70 4d 65 6d 6f 72  t("Size", pMemor
1eaf0 79 2c 20 30 2c 20 49 6e 74 50 74 72 2e 53 69 7a  y, 0, IntPtr.Siz
1eb00 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
1eb10 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
1eb20 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
1eb30 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
1eb40 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
1eb50 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f  te3_malloc_size_
1eb60 69 6e 74 65 72 6f 70 28 70 4d 65 6d 6f 72 79 29  interop(pMemory)
1eb70 3b 0d 0a 23 65 6c 69 66 20 54 52 41 43 4b 5f 4d  ;..#elif TRACK_M
1eb80 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20  EMORY_BYTES..   
1eb90 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1eba0 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b           // HACK
1ebb0 3a 20 4f 6b 2c 20 77 65 20 63 61 6e 6e 6f 74 20  : Ok, we cannot 
1ebc0 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69  determine the si
1ebd0 7a 65 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79  ze of the memory
1ebe0 20 62 6c 6f 63 6b 3b 0d 0a 20 20 20 20 20 20 20   block;..       
1ebf0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
1ec00 65 72 65 66 6f 72 65 2c 20 6a 75 73 74 20 74 72  erefore, just tr
1ec10 61 63 6b 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c  ack number of al
1ec20 6c 6f 63 61 74 69 6f 6e 73 20 69 6e 73 74 65 61  locations instea
1ec30 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
1ec40 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1ec50 72 65 74 75 72 6e 20 28 70 4d 65 6d 6f 72 79 20  return (pMemory 
1ec60 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  != IntPtr.Zero) 
1ec70 3f 20 31 20 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d  ? 1 : 0;..#else.
1ec80 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1ec90 75 72 6e 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a  urn 0;..#endif..
1eca0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1ecb0 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ed00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1ed10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ed20 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
1ed30 72 6e 73 20 74 68 65 20 61 63 74 75 61 6c 20 73  rns the actual s
1ed40 69 7a 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  ize of the speci
1ed50 66 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c 6f 63  fied memory bloc
1ed60 6b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  k..        /// t
1ed70 68 61 74 20 77 61 73 20 70 72 65 76 69 6f 75 73  hat was previous
1ed80 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
1ed90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
1eda0 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 2c 0d 0a 20  Allocate" />,.. 
1edb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1edc0 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 36 34  cref="Allocate64
1edd0 22 20 2f 3e 2c 20 3c 73 65 65 20 63 72 65 66 3d  " />, <see cref=
1ede0 22 41 6c 6c 6f 63 61 74 65 55 6e 74 72 61 63 6b  "AllocateUntrack
1edf0 65 64 22 20 2f 3e 2c 20 6f 72 0d 0a 20 20 20 20  ed" />, or..    
1ee00 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1ee10 66 3d 22 41 6c 6c 6f 63 61 74 65 36 34 55 6e 74  f="Allocate64Unt
1ee20 72 61 63 6b 65 64 22 20 2f 3e 20 6d 65 74 68 6f  racked" /> metho
1ee30 64 73 20 6f 72 20 64 69 72 65 63 74 6c 79 20 66  ds or directly f
1ee40 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
1ee50 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72 65   /// SQLite core
1ee60 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
1ee70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1ee80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1ee90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d  param name="pMem
1eea0 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ory">..        /
1eeb0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1eec0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d  inter to the mem
1eed0 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f  ory block previo
1eee0 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
1eef0 6f 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  om..        /// 
1ef00 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 41  the <see cref="A
1ef10 6c 6c 6f 63 61 74 65 22 20 2f 3e 2c 20 3c 73 65  llocate" />, <se
1ef20 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65  e cref="Allocate
1ef30 36 34 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 20  64" />,..       
1ef40 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1ef50 41 6c 6c 6f 63 61 74 65 55 6e 74 72 61 63 6b 65  AllocateUntracke
1ef60 64 22 20 2f 3e 2c 20 6f 72 0d 0a 20 20 20 20 20  d" />, or..     
1ef70 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1ef80 3d 22 41 6c 6c 6f 63 61 74 65 36 34 55 6e 74 72  ="Allocate64Untr
1ef90 61 63 6b 65 64 22 20 2f 3e 20 6d 65 74 68 6f 64  acked" /> method
1efa0 73 20 6f 72 20 64 69 72 65 63 74 6c 79 20 66 72  s or directly fr
1efb0 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
1efc0 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72 65 20  /// SQLite core 
1efd0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
1efe0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1eff0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1f000 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1f010 2f 2f 20 54 68 65 20 61 63 74 75 61 6c 20 73 69  // The actual si
1f020 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  ze, in bytes, of
1f030 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63   the memory bloc
1f040 6b 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20  k specified via 
1f050 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1f060 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e   native pointer.
1f070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f080 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f090 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1f0a0 75 6c 6f 6e 67 20 53 69 7a 65 36 34 28 49 6e 74  ulong Size64(Int
1f0b0 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20  Ptr pMemory)..  
1f0c0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45 42        {..#if DEB
1f0d0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1f0e0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 43 68  SQLiteMarshal.Ch
1f0f0 65 63 6b 41 6c 69 67 6e 6d 65 6e 74 28 22 53 69  eckAlignment("Si
1f100 7a 65 36 34 22 2c 20 70 4d 65 6d 6f 72 79 2c 20  ze64", pMemory, 
1f110 30 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  0, IntPtr.Size);
1f120 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1f130 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
1f140 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1f150 64 73 2e 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65  ds.sqlite3_msize
1f160 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20 20  (pMemory);..    
1f170 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f180 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f1d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f1e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
1f1f0 72 65 65 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c  rees a memory bl
1f200 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  ock previously o
1f210 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
1f220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1f230 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1f240 65 22 20 2f 3e 20 6f 72 20 3c 73 65 65 20 63 72  e" /> or <see cr
1f250 65 66 3d 22 41 6c 6c 6f 63 61 74 65 36 34 22 20  ef="Allocate64" 
1f260 2f 3e 20 6d 65 74 68 6f 64 73 2e 20 20 49 66 0d  /> methods.  If.
1f270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
1f280 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1f290 54 45 53 20 6f 70 74 69 6f 6e 20 77 61 73 20 65  TES option was e
1f2a0 6e 61 62 6c 65 64 20 61 74 20 63 6f 6d 70 69 6c  nabled at compil
1f2b0 65 2d 74 69 6d 65 2c 20 61 64 6a 75 73 74 73 0d  e-time, adjusts.
1f2c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
1f2d0 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
1f2e0 20 63 75 72 72 65 6e 74 6c 79 20 61 6c 6c 6f 63   currently alloc
1f2f0 61 74 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  ated by this cla
1f300 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
1f310 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f320 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f330 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d  name="pMemory">.
1f340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1f350 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1f360 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c  to the memory bl
1f370 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  ock previously o
1f380 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
1f390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1f3a0 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1f3b0 65 22 20 2f 3e 20 6f 72 20 3c 73 65 65 20 63 72  e" /> or <see cr
1f3c0 65 66 3d 22 41 6c 6c 6f 63 61 74 65 36 34 22 20  ef="Allocate64" 
1f3d0 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  /> methods...   
1f3e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1f3f0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1f400 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 46 72  c static void Fr
1f410 65 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72  ee(IntPtr pMemor
1f420 79 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  y)..        {..#
1f430 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1f440 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
1f450 68 61 6c 2e 43 68 65 63 6b 41 6c 69 67 6e 6d 65  hal.CheckAlignme
1f460 6e 74 28 22 46 72 65 65 22 2c 20 70 4d 65 6d 6f  nt("Free", pMemo
1f470 72 79 2c 20 30 2c 20 49 6e 74 50 74 72 2e 53 69  ry, 0, IntPtr.Si
1f480 7a 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ze);..#endif....
1f490 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59  #if TRACK_MEMORY
1f4a0 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20  _BYTES..        
1f4b0 20 20 20 20 4d 65 6d 6f 72 79 49 73 42 65 69 6e      MemoryIsBein
1f4c0 67 46 72 65 65 64 28 70 4d 65 6d 6f 72 79 29 3b  gFreed(pMemory);
1f4d0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1f4e0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
1f4f0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
1f500 74 65 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79  te3_free(pMemory
1f510 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
1f520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f570 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1f580 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1f590 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6d     /// Frees a m
1f5a0 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76  emory block prev
1f5b0 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20  iously obtained 
1f5c0 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20  from the SQLite 
1f5d0 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  core..        //
1f5e0 2f 20 6c 69 62 72 61 72 79 20 77 69 74 68 6f 75  / library withou
1f5f0 74 20 61 64 6a 75 73 74 69 6e 67 20 74 68 65 20  t adjusting the 
1f600 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f 63 61  number of alloca
1f610 74 65 64 20 62 79 74 65 73 20 63 75 72 72 65 6e  ted bytes curren
1f620 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tly..        ///
1f630 20 74 72 61 63 6b 65 64 20 62 79 20 74 68 69 73   tracked by this
1f640 20 63 6c 61 73 73 2e 20 20 54 68 69 73 20 69 73   class.  This is
1f650 20 75 73 65 66 75 6c 20 77 68 65 6e 20 64 65 61   useful when dea
1f660 6c 69 6e 67 20 77 69 74 68 20 62 6c 6f 63 6b 73  ling with blocks
1f670 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   of..        ///
1f680 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 65 72   memory that wer
1f690 65 20 6e 6f 74 20 61 6c 6c 6f 63 61 74 65 64 20  e not allocated 
1f6a0 75 73 69 6e 67 20 74 68 69 73 20 63 6c 61 73 73  using this class
1f6b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f6c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1f6d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f6e0 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20  me="pMemory">.. 
1f6f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1f700 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1f710 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63   the memory bloc
1f720 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74  k previously obt
1f730 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a  ained from the..
1f740 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69          /// SQLi
1f750 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
1f760 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f770 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f780 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
1f790 69 64 20 46 72 65 65 55 6e 74 72 61 63 6b 65 64  id FreeUntracked
1f7a0 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29  (IntPtr pMemory)
1f7b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1f7c0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1f7d0 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
1f7e0 6c 2e 43 68 65 63 6b 41 6c 69 67 6e 6d 65 6e 74  l.CheckAlignment
1f7f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1f800 20 20 20 22 46 72 65 65 55 6e 74 72 61 63 6b 65     "FreeUntracke
1f810 64 22 2c 20 70 4d 65 6d 6f 72 79 2c 20 30 2c 20  d", pMemory, 0, 
1f820 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 23  IntPtr.Size);..#
1f830 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
1f840 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
1f850 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
1f860 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79 29 3b 0d  _free(pMemory);.
1f870 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
1f880 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1f890 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1f8a0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f900 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
1f910 72 69 6e 67 20 53 74 61 74 69 63 20 43 6c 61 73  ring Static Clas
1f920 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
1f930 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
1f940 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e  is class contain
1f950 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73  s static methods
1f960 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74   that are used t
1f970 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69  o deal with nati
1f980 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 54 46 2d  ve..    /// UTF-
1f990 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
1f9a0 73 20 74 6f 20 62 65 20 75 73 65 64 20 77 69 74  s to be used wit
1f9b0 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
1f9c0 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1f9d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1f9e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f9f0 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65  tic class SQLite
1fa00 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20  String..    {.. 
1fa10 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
1fa20 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
1fa30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1fa40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1fa50 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
1fa60 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73 69 62 6c   maximum possibl
1fa70 65 20 6c 65 6e 67 74 68 20 66 6f 72 20 74 68 65  e length for the
1fa80 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 65 6e   native UTF-8 en
1fa90 63 6f 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  coded..        /
1faa0 2f 2f 20 73 74 72 69 6e 67 73 20 75 73 65 64 20  // strings used 
1fab0 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  with the SQLite 
1fac0 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
1fad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1fae0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
1faf0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
1fb00 74 20 54 68 69 72 74 79 42 69 74 73 20 3d 20 30  t ThirtyBits = 0
1fb10 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d 0a 20 20  x3fffffff;....  
1fb20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1fb70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1fb80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1fb90 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
1fba0 3c 73 65 65 20 63 72 65 66 3d 22 45 6e 63 6f 64  <see cref="Encod
1fbb0 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ing" /> object i
1fbc0 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20  nstance used to 
1fbd0 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20  handle..        
1fbe0 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20  /// conversions 
1fbf0 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e 0d 0a  from/to UTF-8...
1fc00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1fc10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1fc20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
1fc30 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64 69 6e 67  eadonly Encoding
1fc40 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 20 3d 20   Utf8Encoding = 
1fc50 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 3b 0d 0a  Encoding.UTF8;..
1fc60 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1fc70 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1fcd0 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 45   #region UTF-8 E
1fce0 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65 72 20 4d  ncoding Helper M
1fcf0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
1fd00 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1fd10 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
1fd20 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
1fd30 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  d managed string
1fd40 20 69 6e 74 6f 20 74 68 65 20 55 54 46 2d 38 20   into the UTF-8 
1fd50 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d 0a 20 20  encoding and..  
1fd60 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
1fd70 73 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 62  s the array of b
1fd80 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ytes containing 
1fd90 69 74 73 20 72 65 70 72 65 73 65 6e 74 61 74 69  its representati
1fda0 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20 20 20 20  on in that..    
1fdb0 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 69 6e 67      /// encoding
1fdc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1fdd0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1fde0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1fdf0 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
1fe00 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
1fe10 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63  aged string to c
1fe20 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1fe30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1fe40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1fe50 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1fe60 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 62  / The array of b
1fe70 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ytes containing 
1fe80 74 68 65 20 72 65 70 72 65 73 65 6e 74 61 74 69  the representati
1fe90 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e 61 67 65  on of the manage
1fea0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
1feb0 74 72 69 6e 67 20 69 6e 20 74 68 65 20 55 54 46  tring in the UTF
1fec0 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f 72 20 6e  -8 encoding or n
1fed0 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
1fee0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1fef0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1ff00 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1ff10 20 62 79 74 65 5b 5d 20 47 65 74 55 74 66 38 42   byte[] GetUtf8B
1ff20 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 0d  ytesFromString(.
1ff30 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1ff40 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
1ff50 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1ff60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ff70 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
1ff80 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1ff90 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1ffa0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1ffb0 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f   return Utf8Enco
1ffc0 64 69 6e 67 2e 47 65 74 42 79 74 65 73 28 76 61  ding.GetBytes(va
1ffd0 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  lue);..        }
1ffe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1fff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20030 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
20040 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
20050 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
20060 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
20070 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
20080 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 73  representing a s
20090 74 72 69 6e 67 20 69 6e 20 74 68 65 0d 0a 20 20  tring in the..  
200a0 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20        /// UTF-8 
200b0 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20 72 65 74  encoding and ret
200c0 75 72 6e 73 20 61 20 6d 61 6e 61 67 65 64 20 73  urns a managed s
200d0 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  tring...        
200e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
200f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20100 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65 73 22 3e  am name="bytes">
20110 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20120 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  e array of bytes
20130 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
20140 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
20150 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
20160 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
20170 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
20180 65 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c  ed string or nul
20190 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
201a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
201b0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
201c0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
201d0 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 46  tring GetStringF
201e0 72 6f 6d 55 74 66 38 42 79 74 65 73 28 0d 0a 20  romUtf8Bytes(.. 
201f0 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
20200 5d 20 62 79 74 65 73 0d 0a 20 20 20 20 20 20 20  ] bytes..       
20210 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
20220 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
20230 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c  f (bytes == null
20240 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
20250 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
20260 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20270 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20280 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
20290 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69  eturn Utf8Encodi
202a0 6e 67 2e 47 65 74 53 74 72 69 6e 67 28 62 79 74  ng.GetString(byt
202b0 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  es);..#else..   
202c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
202d0 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74  Utf8Encoding.Get
202e0 53 74 72 69 6e 67 28 62 79 74 65 73 2c 20 30 2c  String(bytes, 0,
202f0 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d   bytes.Length);.
20300 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
20310 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
20320 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
20330 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20370 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
20380 20 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46       #region UTF
20390 2d 38 20 53 74 72 69 6e 67 20 48 65 6c 70 65 72  -8 String Helper
203a0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
203b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
203c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f  .        /// Pro
203d0 62 65 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69  bes a native poi
203e0 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69 6e 67  nter to a string
203f0 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e   in the UTF-8 en
20400 63 6f 64 69 6e 67 20 66 6f 72 20 69 74 73 0d 0a  coding for its..
20410 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 65 72 6d          /// term
20420 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63 68 61 72  inating NUL char
20430 61 63 74 65 72 2c 20 77 69 74 68 69 6e 20 74 68  acter, within th
20440 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
20450 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20 20 20 20  th limit...     
20460 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
20470 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20480 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
20490 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
204a0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c  / The native NUL
204b0 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69  -terminated stri
204c0 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20  ng pointer...   
204d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
204e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
204f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 69 6d 69  param name="limi
20500 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
20510 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e   The maximum len
20520 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
20530 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
20540 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
20550 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20560 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
20570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20580 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  e length of the 
20590 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69  native string, i
205a0 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20 7a 65 72  n bytes -OR- zer
205b0 6f 20 69 66 20 74 68 65 20 6c 65 6e 67 74 68 0d  o if the length.
205c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 75  .        /// cou
205d0 6c 64 20 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  ld not be determ
205e0 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ined...        /
205f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
20600 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
20610 61 74 69 63 20 69 6e 74 20 50 72 6f 62 65 46 6f  atic int ProbeFo
20620 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68 28  rUtf8ByteLength(
20630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
20640 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20  tPtr pValue,..  
20650 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 69            int li
20660 6d 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mit..           
20670 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
20680 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
20690 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20  ength = 0;....  
206a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70            if ((p
206b0 56 61 6c 75 65 20 21 3d 20 49 6e 74 50 74 72 2e  Value != IntPtr.
206c0 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d 69 74 20  Zero) && (limit 
206d0 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  > 0))..         
206e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
206f0 20 20 20 20 20 20 64 6f 0d 0a 20 20 20 20 20 20        do..      
20700 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20720 20 69 66 20 28 4d 61 72 73 68 61 6c 2e 52 65 61   if (Marshal.Rea
20730 64 42 79 74 65 28 70 56 61 6c 75 65 2c 20 6c 65  dByte(pValue, le
20740 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a 20 20 20  ngth) == 0)..   
20750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20760 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20       break;.... 
20770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20780 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e 3d     if (length >=
20790 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20 20 20 20   limit)..       
207a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207b0 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20   break;....     
207c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
207d0 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20 20 20 20  ength++;..      
207e0 20 20 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c            } whil
207f0 65 20 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  e (true);..     
20800 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
20810 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
20820 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  ength;..        
20830 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
20840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20880 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20890 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
208a0 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
208b0 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
208c0 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  d native NUL-ter
208d0 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
208e0 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d 0a 20 20  ring pointer..  
208f0 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61        /// into a
20900 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e   managed string.
20910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20920 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20930 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20940 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20  e="pValue">..   
20950 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
20960 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
20970 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
20980 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
20990 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
209a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
209b0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
209c0 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
209d0 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70  tring or null up
209e0 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
209f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
20a00 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
20a10 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
20a20 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g StringFromUtf8
20a30 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
20a40 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
20a50 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
20a60 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
20a70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20a80 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49   StringFromUtf8I
20a90 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr(pValue,.. 
20aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
20ab0 72 6f 62 65 46 6f 72 55 74 66 38 42 79 74 65 4c  robeForUtf8ByteL
20ac0 65 6e 67 74 68 28 70 56 61 6c 75 65 2c 20 54 68  ength(pValue, Th
20ad0 69 72 74 79 42 69 74 73 29 29 3b 0d 0a 20 20 20  irtyBits));..   
20ae0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
20af0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
20b40 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
20b50 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
20b60 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65  Converts the spe
20b70 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 55 54  cified native UT
20b80 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
20b90 65 72 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  er of the specif
20ba0 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
20bb0 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d   length into a m
20bc0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a  anaged string...
20bd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
20be0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20bf0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20c00 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  "pValue">..     
20c10 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
20c20 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  e UTF-8 string p
20c30 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
20c40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20c50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20c60 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e  m name="length">
20c70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20c80 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  e length of the 
20c90 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69  native string, i
20ca0 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20  n bytes...      
20cb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20cc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
20cd0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
20ce0 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
20cf0 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70  tring or null up
20d00 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
20d10 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
20d20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
20d30 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
20d40 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g StringFromUtf8
20d50 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
20d60 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
20d70 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
20d80 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20   int length..   
20d90 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
20da0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
20db0 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
20dc0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
20dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
20de0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
20df0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
20e00 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
20e10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20e20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
20e30 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20 62 79  ] bytes = new by
20e40 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20  te[length];.... 
20e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
20e60 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c  arshal.Copy(pVal
20e70 75 65 2c 20 62 79 74 65 73 2c 20 30 2c 20 6c 65  ue, bytes, 0, le
20e80 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth);....      
20e90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20ea0 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74   GetStringFromUt
20eb0 66 38 42 79 74 65 73 28 62 79 74 65 73 29 3b 0d  f8Bytes(bytes);.
20ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
20ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
20ee0 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
20ef0 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  y;..        }...
20f00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
20f60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
20f70 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
20f80 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61  the specified ma
20f90 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74  naged string int
20fa0 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  o a native NUL-t
20fb0 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20  erminated..     
20fc0 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72     /// UTF-8 str
20fd0 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69 6e  ing pointer usin
20fe0 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65  g memory obtaine
20ff0 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  d from the SQLit
21000 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20  e core..        
21010 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  /// library...  
21020 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
21030 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21040 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
21050 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
21060 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
21070 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72  string to conver
21080 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
21090 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
210a0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
210b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
210c0 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
210d0 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
210e0 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a  ing pointer or..
210f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
21100 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
21110 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c  ro" /> upon fail
21120 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
21130 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
21140 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21150 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38 49  tic IntPtr Utf8I
21160 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
21170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
21180 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
21190 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
211a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
211b0 20 20 72 65 74 75 72 6e 20 55 74 66 38 49 6e 74    return Utf8Int
211c0 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61  PtrFromString(va
211d0 6c 75 65 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20  lue, true);..   
211e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
211f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
21200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21230 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
21240 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
21250 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
21260 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65  Converts the spe
21270 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73  cified managed s
21280 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74  tring into a nat
21290 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
212a0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
212b0 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
212c0 6e 74 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72  nter using memor
212d0 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
212e0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
212f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  .        /// lib
21300 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
21310 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
21320 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21330 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
21340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21350 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
21360 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
21370 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
21380 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
21390 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 72 61 63  param name="trac
213a0 6b 65 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ked">..        /
213b0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 6f  // Non-zero to o
213c0 62 74 61 69 6e 20 6d 65 6d 6f 72 79 20 66 72 6f  btain memory fro
213d0 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  m the SQLite cor
213e0 65 20 6c 69 62 72 61 72 79 20 77 69 74 68 6f 75  e library withou
213f0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  t..        /// a
21400 64 6a 75 73 74 69 6e 67 20 74 68 65 20 6e 75 6d  djusting the num
21410 62 65 72 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64  ber of allocated
21420 20 62 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79   bytes currently
21430 20 62 65 69 6e 67 20 74 72 61 63 6b 65 64 0d 0a   being tracked..
21440 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
21450 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
21460 4c 69 74 65 4d 65 6d 6f 72 79 22 20 2f 3e 20 63  LiteMemory" /> c
21470 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
21480 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21490 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
214a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
214b0 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  The native NUL-t
214c0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
214d0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f  string pointer o
214e0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  r..        /// <
214f0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
21500 2e 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66  .Zero" /> upon f
21510 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
21520 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
21530 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21540 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 55 74  static IntPtr Ut
21550 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
21560 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng(..           
21570 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a   string value,..
21580 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
21590 20 74 72 61 63 6b 65 64 0d 0a 20 20 20 20 20 20   tracked..      
215a0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
215b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
215c0 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d  int length = 0;.
215d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
215e0 65 74 75 72 6e 20 55 74 66 38 49 6e 74 50 74 72  eturn Utf8IntPtr
215f0 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
21600 2c 20 74 72 61 63 6b 65 64 2c 20 72 65 66 20 6c  , tracked, ref l
21610 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20  ength);..       
21620 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
21630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21670 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21680 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21690 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
216a0 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
216b0 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  ed managed strin
216c0 67 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20  g into a native 
216d0 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a  NUL-terminated..
216e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d          /// UTF-
216f0 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
21700 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62   using memory ob
21710 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
21720 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
21730 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
21740 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21750 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
21760 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21770 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
21780 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
21790 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63  aged string to c
217a0 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
217b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
217c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
217d0 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e  m name="length">
217e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
217f0 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  e length of the 
21800 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69  native string, i
21810 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20  n bytes...      
21820 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21830 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
21840 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
21850 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55  // The native NU
21860 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46  L-terminated UTF
21870 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
21880 72 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r or..        //
21890 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
218a0 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 75 70 6f  Ptr.Zero" /> upo
218b0 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
218c0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
218d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
218e0 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
218f0 20 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53   Utf8IntPtrFromS
21900 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
21910 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
21920 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
21930 65 66 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20  ef int length.. 
21940 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
21950 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21960 20 20 20 20 20 72 65 74 75 72 6e 20 55 74 66 38       return Utf8
21970 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
21980 28 76 61 6c 75 65 2c 20 74 72 75 65 2c 20 72 65  (value, true, re
21990 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20  f length);..    
219a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
219b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
219c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
21a00 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
21a10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
21a20 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63  onverts the spec
21a30 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74  ified managed st
21a40 72 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74 69  ring into a nati
21a50 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  ve NUL-terminate
21a60 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  d..        /// U
21a70 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
21a80 74 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79  ter using memory
21a90 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
21aa0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a  he SQLite core..
21ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72          /// libr
21ac0 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
21ad0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
21ae0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21af0 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
21b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21b10 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74  managed string t
21b20 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
21b30 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21b50 61 72 61 6d 20 6e 61 6d 65 3d 22 74 72 61 63 6b  aram name="track
21b60 65 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ed">..        //
21b70 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 6f 62  / Non-zero to ob
21b80 74 61 69 6e 20 6d 65 6d 6f 72 79 20 66 72 6f 6d  tain memory from
21b90 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
21ba0 20 6c 69 62 72 61 72 79 20 77 69 74 68 6f 75 74   library without
21bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 64  ..        /// ad
21bc0 6a 75 73 74 69 6e 67 20 74 68 65 20 6e 75 6d 62  justing the numb
21bd0 65 72 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20  er of allocated 
21be0 62 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79 20  bytes currently 
21bf0 62 65 69 6e 67 20 74 72 61 63 6b 65 64 0d 0a 20  being tracked.. 
21c00 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68         /// by th
21c10 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
21c20 69 74 65 4d 65 6d 6f 72 79 22 20 2f 3e 20 63 6c  iteMemory" /> cl
21c30 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
21c40 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21c50 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21c60 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20  ame="length">.. 
21c70 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c         /// The l
21c80 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74  ength of the nat
21c90 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62  ive string, in b
21ca0 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ytes...        /
21cb0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21cc0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
21cd0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
21ce0 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  The native NUL-t
21cf0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
21d00 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f  string pointer o
21d10 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  r..        /// <
21d20 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
21d30 2e 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66  .Zero" /> upon f
21d40 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
21d50 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
21d60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21d70 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 55 74  static IntPtr Ut
21d80 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
21d90 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng(..           
21da0 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a   string value,..
21db0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
21dc0 20 74 72 61 63 6b 65 64 2c 0d 0a 20 20 20 20 20   tracked,..     
21dd0 20 20 20 20 20 20 20 72 65 66 20 69 6e 74 20 6c         ref int l
21de0 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20  ength..         
21df0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
21e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
21e10 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
21e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21e30 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
21e40 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
21e50 20 20 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c      IntPtr resul
21e60 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
21e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
21e80 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 47 65 74  te[] bytes = Get
21e90 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72  Utf8BytesFromStr
21ea0 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ing(value);.... 
21eb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
21ec0 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ytes == null).. 
21ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
21ee0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
21ef0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
21f00 20 20 6c 65 6e 67 74 68 20 3d 20 62 79 74 65 73    length = bytes
21f10 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20  .Length;....    
21f20 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63          if (trac
21f30 6b 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ked)..          
21f40 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 53        result = S
21f50 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
21f60 63 61 74 65 28 6c 65 6e 67 74 68 20 2b 20 31 29  cate(length + 1)
21f70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  ;..            e
21f80 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
21f90 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 53 51       result = SQ
21fa0 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63  LiteMemory.Alloc
21fb0 61 74 65 55 6e 74 72 61 63 6b 65 64 28 6c 65 6e  ateUntracked(len
21fc0 67 74 68 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20  gth + 1);....   
21fd0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
21fe0 75 6c 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ult == IntPtr.Ze
21ff0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
22000 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
22010 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
22020 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
22030 43 6f 70 79 28 62 79 74 65 73 2c 20 30 2c 20 72  Copy(bytes, 0, r
22040 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d  esult, length);.
22050 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
22060 73 68 61 6c 2e 57 72 69 74 65 42 79 74 65 28 72  shal.WriteByte(r
22070 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30  esult, length, 0
22080 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
22090 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
220a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
220b0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
220c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
220d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22110 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
22120 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69  egion UTF-8 Stri
22130 6e 67 20 41 72 72 61 79 20 48 65 6c 70 65 72 20  ng Array Helper 
22140 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
22150 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22160 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
22170 65 72 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61  erts a logical a
22180 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e  rray of native N
22190 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
221a0 46 2d 38 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  F-8 string..    
221b0 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73      /// pointers
221c0 20 69 6e 74 6f 20 61 6e 20 61 72 72 61 79 20 6f   into an array o
221d0 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  f managed string
221e0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
221f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
22200 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
22210 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20  ame="argc">..   
22220 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
22230 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20  ber of elements 
22240 69 6e 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61  in the logical a
22250 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a  rray of native..
22260 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d          /// NUL-
22270 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
22280 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73   string pointers
22290 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
222a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
222b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
222c0 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
222d0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
222e0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
222f0 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66  logical array of
22300 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
22310 69 6e 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  inated..        
22320 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67  /// UTF-8 string
22330 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e   pointers to con
22340 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
22350 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22360 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
22370 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
22380 54 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e  The array of man
22390 61 67 65 64 20 73 74 72 69 6e 67 73 20 6f 72 20  aged strings or 
223a0 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
223b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
223c0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
223d0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
223e0 63 20 73 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e  c string[] Strin
223f0 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69  gArrayFromUtf8Si
22400 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20  zeAndIntPtr(..  
22410 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
22420 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
22430 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20   IntPtr argv..  
22440 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
22450 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
22460 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20 30      if (argc < 0
22470 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22480 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
22490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
224a0 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50 74  f (argv == IntPt
224b0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
224c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
224d0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
224e0 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 72 65       string[] re
224f0 73 75 6c 74 20 3d 20 6e 65 77 20 73 74 72 69 6e  sult = new strin
22500 67 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20  g[argc];....    
22510 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
22520 20 69 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73   index = 0, offs
22530 65 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20  et = 0;..       
22540 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
22550 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67  ex < result.Leng
22560 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th;..           
22570 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b           index++
22580 2c 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50  , offset += IntP
22590 74 72 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20  tr.Size)..      
225a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
225b0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
225c0 70 41 72 67 20 3d 20 53 51 4c 69 74 65 4d 61 72  pArg = SQLiteMar
225d0 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
225e0 61 72 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  argv, offset);..
225f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22600 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20    result[index] 
22610 3d 20 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74  = (pArg != IntPt
22620 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20  r.Zero) ?..     
22630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
22640 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74  tringFromUtf8Int
22650 50 74 72 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c  Ptr(pArg) : null
22660 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
22670 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22680 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
22690 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
226a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
226b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
226f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
22700 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
22710 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 61  // Converts an a
22720 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20  rray of managed 
22730 73 74 72 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20  strings into an 
22740 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d  array of native.
22750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c  .        /// NUL
22760 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
22770 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
22780 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
22790 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
227a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
227b0 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20  ame="values">.. 
227c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
227d0 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20  rray of managed 
227e0 73 74 72 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65  strings to conve
227f0 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
22800 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
22810 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
22820 6d 65 3d 22 74 72 61 63 6b 65 64 22 3e 0d 0a 20  me="tracked">.. 
22830 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
22840 65 72 6f 20 74 6f 20 6f 62 74 61 69 6e 20 6d 65  ero to obtain me
22850 6d 6f 72 79 20 66 72 6f 6d 20 74 68 65 20 53 51  mory from the SQ
22860 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
22870 79 20 77 69 74 68 6f 75 74 0d 0a 20 20 20 20 20  y without..     
22880 20 20 20 2f 2f 2f 20 61 64 6a 75 73 74 69 6e 67     /// adjusting
22890 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   the number of a
228a0 6c 6c 6f 63 61 74 65 64 20 62 79 74 65 73 20 63  llocated bytes c
228b0 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 74  urrently being t
228c0 72 61 63 6b 65 64 0d 0a 20 20 20 20 20 20 20 20  racked..        
228d0 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20  /// by the <see 
228e0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 65 6d 6f  cref="SQLiteMemo
228f0 72 79 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  ry" /> class... 
22900 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
22910 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
22920 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
22930 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
22940 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d  y of native NUL-
22950 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
22960 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73   string pointers
22970 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20   or null..      
22980 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69 6c 75    /// upon failu
22990 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
229a0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
229b0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
229c0 69 63 20 49 6e 74 50 74 72 5b 5d 20 55 74 66 38  ic IntPtr[] Utf8
229d0 49 6e 74 50 74 72 41 72 72 61 79 46 72 6f 6d 53  IntPtrArrayFromS
229e0 74 72 69 6e 67 41 72 72 61 79 28 0d 0a 20 20 20  tringArray(..   
229f0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
22a00 5d 20 76 61 6c 75 65 73 2c 0d 0a 20 20 20 20 20  ] values,..     
22a10 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63         bool trac
22a20 6b 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ked..           
22a30 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
22a40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
22a50 61 6c 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  alues == null)..
22a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a70 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
22a80 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
22a90 74 72 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65  tr[] result = ne
22aa0 77 20 49 6e 74 50 74 72 5b 76 61 6c 75 65 73 2e  w IntPtr[values.
22ab0 4c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20  Length];....    
22ac0 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
22ad0 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65   index = 0; inde
22ae0 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74  x < result.Lengt
22af0 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20  h; index++)..   
22b00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
22b10 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74 66  ult[index] = Utf
22b20 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
22b30 67 28 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d 2c  g(values[index],
22b40 20 74 72 61 63 6b 65 64 29 3b 0d 0a 0d 0a 20 20   tracked);....  
22b50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
22b60 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
22b70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
22b80 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
22b90 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
22ba0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
22bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bf0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
22c00 20 53 51 4c 69 74 65 42 79 74 65 73 20 53 74 61   SQLiteBytes Sta
22c10 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  tic Class..    /
22c20 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
22c30 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
22c40 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63   contains static
22c50 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72   methods that ar
22c60 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77  e used to deal w
22c70 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ith native..    
22c80 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  /// pointers to 
22c90 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68  memory blocks th
22ca0 61 74 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e  at logically con
22cb0 74 61 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62  tain arrays of b
22cc0 79 74 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  ytes to be..    
22cd0 2f 2f 2f 20 75 73 65 64 20 77 69 74 68 20 74 68  /// used with th
22ce0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
22cf0 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
22d00 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
22d10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22d20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 79 74 65  class SQLiteByte
22d30 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
22d40 20 20 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41    #region Byte A
22d50 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68  rray Helper Meth
22d60 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
22d70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22d80 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
22d90 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
22da0 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61  r to a logical a
22db0 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66  rray of bytes of
22dc0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
22dd0 2f 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  / specified leng
22de0 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  th into a manage
22df0 64 20 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20  d byte array... 
22e00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
22e10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
22e20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22e30 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  pValue">..      
22e40 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
22e50 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
22e60 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66  logical array of
22e70 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72   bytes to conver
22e80 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
22e90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22ea0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22eb0 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20  e="length">..   
22ec0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
22ed0 67 74 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  gth, in bytes, o
22ee0 66 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  f the logical ar
22ef0 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ray of bytes to 
22f00 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
22f10 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22f20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
22f30 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
22f40 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62  // The managed b
22f50 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c  yte array or nul
22f60 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
22f70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
22f80 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22f90 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
22fa0 79 74 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72  yte[] FromIntPtr
22fb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
22fc0 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr pValue,.. 
22fd0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
22fe0 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20  ength..         
22ff0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
23000 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
23010 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
23020 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
23030 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
23040 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
23050 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
23060 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
23070 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
23080 77 20 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20  w byte[0];....  
23090 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
230a0 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79   result = new by
230b0 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20  te[length];.... 
230c0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
230d0 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20  al.Copy(pValue, 
230e0 72 65 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74  result, 0, lengt
230f0 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
23100 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
23110 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
23120 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
23130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23170 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23180 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23190 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
231a0 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72   managed byte ar
231b0 72 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76  ray into a nativ
231c0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
231d0 6f 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20  ogical..        
231e0 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74  /// array of byt
231f0 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
23200 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
23210 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23220 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
23230 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
23240 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
23250 79 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  y to convert... 
23260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23270 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
23280 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
23290 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
232a0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
232b0 6c 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72 72  logical byte arr
232c0 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ay or null upon 
232d0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
232e0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
232f0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
23300 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54   static IntPtr T
23310 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  oIntPtr(..      
23320 20 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c        byte[] val
23330 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
23340 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
23350 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
23360 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ngth = 0;....   
23370 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
23380 54 6f 49 6e 74 50 74 72 28 76 61 6c 75 65 2c 20  ToIntPtr(value, 
23390 72 65 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20  ref length);..  
233a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
233b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
233c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
23400 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
23410 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
23420 20 43 6f 6e 76 65 72 74 73 20 61 20 6d 61 6e 61   Converts a mana
23430 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20 69  ged byte array i
23440 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 70 6f 69  nto a native poi
23450 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61  nter to a logica
23460 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  l..        /// a
23470 72 72 61 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a  rray of bytes...
23480 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
23490 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
234a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
234b0 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
234c0 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
234d0 64 20 62 79 74 65 20 61 72 72 61 79 20 74 6f 20  d byte array to 
234e0 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
234f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
23500 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
23510 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22  am name="length"
23520 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
23530 68 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79  he length, in by
23540 74 65 73 2c 20 6f 66 20 74 68 65 20 63 6f 6e 76  tes, of the conv
23550 65 72 74 65 64 20 6c 6f 67 69 63 61 6c 20 61 72  erted logical ar
23560 72 61 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20  ray of bytes... 
23570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23580 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
23590 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
235a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
235b0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
235c0 6c 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72 72  logical byte arr
235d0 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ay or null upon 
235e0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
235f0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
23600 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
23610 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54   static IntPtr T
23620 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  oIntPtr(..      
23630 20 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c        byte[] val
23640 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
23650 20 72 65 66 20 69 6e 74 20 6c 65 6e 67 74 68 0d   ref int length.
23660 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
23670 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23680 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
23690 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
236a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
236b0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
236c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ..            le
236d0 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e  ngth = value.Len
236e0 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gth;....        
236f0 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d      if (length =
23700 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0)..          
23710 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
23720 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
23730 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
23740 72 65 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d  result = SQLiteM
23750 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c  emory.Allocate(l
23760 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20  ength);....     
23770 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c         if (resul
23780 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
23790 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
237a0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
237b0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
237c0 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f        Marshal.Co
237d0 70 79 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73  py(value, 0, res
237e0 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d  ult, length);...
237f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
23800 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
23810 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
23820 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
23830 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
23840 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
23850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23890 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
238a0 69 6f 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61  ion SQLiteMarsha
238b0 6c 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a  l Static Class..
238c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
238d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
238e0 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73  class contains s
238f0 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68  tatic methods th
23900 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 70  at are used to p
23910 65 72 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a  erform several..
23920 20 20 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65      /// low-leve
23930 6c 20 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69  l data marshalli
23940 6e 67 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e  ng tasks between
23950 20 6e 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61   native and mana
23960 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f  ged code...    /
23970 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23980 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23990 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d  ic class SQLiteM
239a0 61 72 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20  arshal..    {.. 
239b0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
239c0 6e 74 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74  ntPtr Helper Met
239d0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
239e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
239f0 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
23a00 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66   a new <see cref
23a10 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
23a20 65 63 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73  ect instance bas
23a30 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20  ed on the..     
23a40 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64     /// specified
23a50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
23a60 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
23a70 73 74 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e  stance and an in
23a80 74 65 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  teger..        /
23a90 2f 2f 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20  // offset...    
23aa0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
23ab0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
23ac0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69  <param name="poi
23ad0 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  nter">..        
23ae0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
23af0 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
23b00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65  ject instance re
23b10 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62  presenting the b
23b20 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ase..        ///
23b30 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
23b40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23b50 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23b60 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23b70 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20  ="offset">..    
23b80 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
23b90 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  ger offset from 
23ba0 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20  the base memory 
23bb0 6c 6f 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68  location that th
23bc0 65 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f  e new..        /
23bd0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
23be0 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
23bf0 69 6e 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20  instance should 
23c00 70 6f 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20  point to...     
23c10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
23c30 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
23c40 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65  /// The new <see
23c50 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
23c60 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
23c70 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
23c80 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
23c90 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
23ca0 63 20 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46  c IntPtr IntPtrF
23cb0 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
23cc0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
23cd0 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
23ce0 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
23cf0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
23d00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23d10 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
23d20 20 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e   IntPtr(pointer.
23d30 54 6f 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73  ToInt64() + offs
23d40 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  et);..        }.
23d50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
23d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23da0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
23db0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
23dc0 20 20 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20       /// Rounds 
23dd0 75 70 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69  up an integer si
23de0 7a 65 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d  ze to the next m
23df0 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61  ultiple of the a
23e00 6c 69 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  lignment...     
23e10 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23e20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
23e30 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65  param name="size
23e40 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
23e50 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74  The size, in byt
23e60 65 73 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65  es, to be rounde
23e70 64 20 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f  d up...        /
23e80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23e90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23ea0 6e 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22  name="alignment"
23eb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
23ec0 68 65 20 72 65 71 75 69 72 65 64 20 61 6c 69 67  he required alig
23ed0 6e 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65  nment for the re
23ee0 74 75 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  turn value...   
23ef0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
23f00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
23f10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
23f20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20    /// The size, 
23f30 69 6e 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65  in bytes, rounde
23f40 64 20 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74  d up to the next
23f50 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65   multiple of the
23f60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ..        /// al
23f70 69 67 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76  ignment.  This v
23f80 61 6c 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20  alue may end up 
23f90 62 65 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61  being the same a
23fa0 73 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a  s the original..
23fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65          /// size
23fc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23fd0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
23fe0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
23ff0 20 69 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20   int RoundUp(.. 
24000 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
24010 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ize,..          
24020 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d    int alignment.
24030 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
24040 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24050 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e         int align
24060 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61  mentMinusOne = a
24070 6c 69 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20  lignment - 1;.. 
24080 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
24090 6e 20 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e  n ((size + align
240a0 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20  mentMinusOne) & 
240b0 7e 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f  ~alignmentMinusO
240c0 6e 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ne);..        }.
240d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
240e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24120 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
24130 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
24140 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
24150 6e 65 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20  nes the offset, 
24160 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65  in bytes, of the
24170 20 6e 65 78 74 20 73 74 72 75 63 74 75 72 65 20   next structure 
24180 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  member...       
24190 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
241a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
241b0 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
241c0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
241d0 54 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62  The offset, in b
241e0 79 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72  ytes, of the cur
241f0 72 65 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d  rent structure m
24200 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ember...        
24210 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24220 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24230 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20   name="size">.. 
24240 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73         /// The s
24250 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  ize, in bytes, o
24260 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74  f the current st
24270 72 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d  ructure member..
24280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
24290 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
242a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
242b0 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20  alignment">..   
242c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69       /// The ali
242d0 67 6e 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73  gnment, in bytes
242e0 2c 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74  , of the next st
242f0 72 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d  ructure member..
24300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
24310 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
24320 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
24330 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66        /// The of
24340 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20  fset, in bytes, 
24350 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75  of the next stru
24360 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
24370 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
24380 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
24390 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
243a0 20 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a   NextOffsetOf(..
243b0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
243c0 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20  offset,..       
243d0 20 20 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a       int size,..
243e0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
243f0 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  alignment..     
24400 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
24410 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24420 20 72 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28   return RoundUp(
24430 6f 66 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61  offset + size, a
24440 6c 69 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20  lignment);..    
24450 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
24460 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
24470 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
244c0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
244d0 4d 61 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c  Marshal Read Hel
244e0 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
244f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
24500 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
24510 52 65 61 64 73 20 61 20 3c 73 65 65 20 63 72 65  Reads a <see cre
24520 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
24530 75 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63  ue from the spec
24540 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20  ified memory..  
24550 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69        /// locati
24560 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
24570 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
24580 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
24590 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d  name="pointer">.
245a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
245b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
245c0 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
245d0 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74  stance represent
245e0 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20  ing the base..  
245f0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79        /// memory
24600 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
24610 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
24620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
24630 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65  aram name="offse
24640 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
24650 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66   The integer off
24660 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
24670 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  e memory locatio
24680 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20  n where the..   
24690 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
246a0 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61  ef="Int32" /> va
246b0 6c 75 65 20 74 6f 20 62 65 20 72 65 61 64 20 69  lue to be read i
246c0 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
246d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
246e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
246f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
24700 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
24710 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61  ef="Int32" /> va
24720 6c 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69  lue at the speci
24730 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  fied memory loca
24740 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
24750 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
24760 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
24770 61 74 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74  atic int ReadInt
24780 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
24790 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
247a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
247b0 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  t offset..      
247c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
247d0 20 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   {..#if DEBUG.. 
247e0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
247f0 41 6c 69 67 6e 6d 65 6e 74 28 22 52 65 61 64 49  Alignment("ReadI
24800 6e 74 33 32 22 2c 20 70 6f 69 6e 74 65 72 2c 20  nt32", pointer, 
24810 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
24820 6e 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  nt));..#endif...
24830 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24840 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24850 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
24860 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
24870 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f  Int32(pointer, o
24880 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a  ffset);..#else..
24890 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
248a0 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  rn Marshal.ReadI
248b0 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt32(IntPtrForOf
248c0 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
248d0 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d  fset));..#endif.
248e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
248f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
24900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
24950 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24960 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65 65  /// Reads a <see
24970 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
24980 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
24990 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
249a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
249b0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
249c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
249d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
249e0 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
249f0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
24a00 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
24a10 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
24a20 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
24a30 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
24a40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
24a50 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
24a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24a70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
24a80 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
24a90 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
24aa0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
24ab0 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
24ac0 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
24ad0 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
24ae0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
24af0 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
24b00 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  > value to be re
24b10 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a  ad is located...
24b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24b30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
24b40 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
24b50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
24b60 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
24b70 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 73  > value at the s
24b80 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20  pecified memory 
24b90 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
24ba0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24bb0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
24bc0 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 52 65  c static long Re
24bd0 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20  adInt64(..      
24be0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
24bf0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
24c00 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20     int offset.. 
24c10 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
24c20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45 42        {..#if DEB
24c30 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
24c40 43 68 65 63 6b 41 6c 69 67 6e 6d 65 6e 74 28 22  CheckAlignment("
24c50 52 65 61 64 49 6e 74 36 34 22 2c 20 70 6f 69 6e  ReadInt64", poin
24c60 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 73 69 7a  ter, offset, siz
24c70 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 23 65 6e  eof(long));..#en
24c80 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
24c90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24ca0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
24cb0 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
24cc0 6c 2e 52 65 61 64 49 6e 74 36 34 28 70 6f 69 6e  l.ReadInt64(poin
24cd0 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23  ter, offset);..#
24ce0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
24cf0 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
24d00 2e 52 65 61 64 49 6e 74 36 34 28 49 6e 74 50 74  .ReadInt64(IntPt
24d10 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
24d20 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23  er, offset));..#
24d30 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
24d40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
24d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d90 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
24da0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24db0 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
24dc0 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  a <see cref="Dou
24dd0 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 66 72  ble" /> value fr
24de0 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64  om the specified
24df0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
24e00 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
24e10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
24e20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24e30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
24e40 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
24e50 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
24e60 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
24e70 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
24e80 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
24e90 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
24ea0 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
24eb0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
24ec0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
24ed0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
24ee0 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
24ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
24f00 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
24f10 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
24f20 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
24f30 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
24f40 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
24f50 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 62 65 20  ouble" /> to be 
24f60 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
24f70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
24f80 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
24f90 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
24fa0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
24fb0 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
24fc0 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68  " /> value at th
24fd0 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
24fe0 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
24ff0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
25000 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
25010 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75 62  blic static doub
25020 6c 65 20 52 65 61 64 44 6f 75 62 6c 65 28 0d 0a  le ReadDouble(..
25030 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
25040 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
25050 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
25060 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
25070 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
25080 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
25090 20 20 20 20 20 20 43 68 65 63 6b 41 6c 69 67 6e        CheckAlign
250a0 6d 65 6e 74 28 22 52 65 61 64 44 6f 75 62 6c 65  ment("ReadDouble
250b0 22 2c 20 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  ", pointer, offs
250c0 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  et, sizeof(doubl
250d0 65 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  e));..#endif....
250e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
250f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25100 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25110 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  rn BitConverter.
25120 49 6e 74 36 34 42 69 74 73 54 6f 44 6f 75 62 6c  Int64BitsToDoubl
25130 65 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  e(Marshal.ReadIn
25140 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
25150 20 20 20 20 20 20 70 6f 69 6e 74 65 72 2c 20 6f        pointer, o
25160 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73 65 0d  ffset));..#else.
25170 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
25180 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72  urn BitConverter
25190 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74 43 6f 6e  .ToDouble(BitCon
251a0 76 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28  verter.GetBytes(
251b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
251c0 20 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e    Marshal.ReadIn
251d0 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
251e0 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
251f0 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23 65 6e  set))), 0);..#en
25200 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
25210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
25220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25260 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
25270 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25280 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e      /// Reads an
25290 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
252a0 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f  tr" /> value fro
252b0 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  m the specified 
252c0 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
252d0 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
252e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
252f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
25300 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25310 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
25320 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
25330 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
25340 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
25350 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
25360 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
25370 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
25380 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
25390 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
253a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
253b0 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
253c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
253d0 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
253e0 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
253f0 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
25400 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
25410 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
25420 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74  tPtr" /> value t
25430 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63  o be read is loc
25440 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
25450 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25460 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
25470 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
25480 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
25490 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
254a0 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  at the specified
254b0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
254c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
254d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
254e0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
254f0 20 49 6e 74 50 74 72 20 52 65 61 64 49 6e 74 50   IntPtr ReadIntP
25500 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
25510 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
25520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
25530 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  t offset..      
25540 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
25550 20 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   {..#if DEBUG.. 
25560 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
25570 41 6c 69 67 6e 6d 65 6e 74 28 22 52 65 61 64 49  Alignment("ReadI
25580 6e 74 50 74 72 22 2c 20 70 6f 69 6e 74 65 72 2c  ntPtr", pointer,
25590 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
255a0 53 69 7a 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Size);..#endif..
255b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
255c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
255d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
255e0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
255f0 64 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2c  dIntPtr(pointer,
25600 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65   offset);..#else
25610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
25620 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
25630 64 49 6e 74 50 74 72 28 49 6e 74 50 74 72 46 6f  dIntPtr(IntPtrFo
25640 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c  rOffset(pointer,
25650 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64   offset));..#end
25660 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  if..        }.. 
25670 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
25680 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
25690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
256a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
256b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
256c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
256d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
256e0 23 72 65 67 69 6f 6e 20 4d 61 72 73 68 61 6c 20  #region Marshal 
256f0 57 72 69 74 65 20 48 65 6c 70 65 72 20 4d 65 74  Write Helper Met
25700 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
25710 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
25720 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20       /// Writes 
25730 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  an <see cref="In
25740 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  t32" /> value to
25750 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
25760 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
25770 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  // location...  
25780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
25790 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
257a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
257b0 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20  ointer">..      
257c0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
257d0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
257e0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
257f0 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65  representing the
25800 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f   base..        /
25810 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  // memory locati
25820 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
25830 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25840 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25850 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20  me="offset">..  
25860 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
25870 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f  teger offset fro
25880 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72  m the base memor
25890 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65  y location where
258a0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
258b0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
258c0 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  32" /> value to 
258d0 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c 6f  be written is lo
258e0 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
258f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25900 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25910 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
25920 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
25930 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
25940 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77 72  " /> value to wr
25950 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ite...        //
25960 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
25970 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
25980 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74 33  c void WriteInt3
25990 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2(..            
259a0 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
259b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
259c0 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
259d0 20 20 20 20 20 20 69 6e 74 20 76 61 6c 75 65 0d        int value.
259e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
259f0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44          {..#if D
25a00 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
25a10 20 20 43 68 65 63 6b 41 6c 69 67 6e 6d 65 6e 74    CheckAlignment
25a20 28 22 57 72 69 74 65 49 6e 74 33 32 22 2c 20 70  ("WriteInt32", p
25a30 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
25a40 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 23  sizeof(int));..#
25a50 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
25a60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25a70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
25a80 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69       Marshal.Wri
25a90 74 65 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c  teInt32(pointer,
25aa0 20 6f 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b   offset, value);
25ab0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
25ac0 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69       Marshal.Wri
25ad0 74 65 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f  teInt32(IntPtrFo
25ae0 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c  rOffset(pointer,
25af0 20 6f 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29   offset), value)
25b00 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
25b10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
25b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
25b70 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
25b80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72  ..        /// Wr
25b90 69 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65  ites an <see cre
25ba0 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c  f="Int64" /> val
25bb0 75 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  ue to the specif
25bc0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
25bd0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
25be0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
25bf0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
25c00 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25c10 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
25c20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
25c30 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
25c40 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
25c50 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
25c60 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
25c70 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
25c80 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
25c90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
25ca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
25cb0 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
25cc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25cd0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
25ce0 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
25cf0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
25d00 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
25d10 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
25d20 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75  ="Int64" /> valu
25d30 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20  e to be written 
25d40 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
25d50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
25d60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
25d70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
25d80 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
25d90 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
25da0 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
25db0 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
25dc0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25dd0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
25de0 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
25df0 65 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  eInt64(..       
25e00 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
25e10 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
25e20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
25e30 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20             long 
25e40 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
25e50 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
25e60 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
25e70 20 20 20 20 20 20 20 20 43 68 65 63 6b 41 6c 69          CheckAli
25e80 67 6e 6d 65 6e 74 28 22 57 72 69 74 65 49 6e 74  gnment("WriteInt
25e90 36 34 22 2c 20 70 6f 69 6e 74 65 72 2c 20 6f 66  64", pointer, of
25ea0 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  fset, sizeof(lon
25eb0 67 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  g));..#endif....
25ec0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25ed0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25ee0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
25ef0 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70  hal.WriteInt64(p
25f00 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
25f10 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
25f20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
25f30 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49  hal.WriteInt64(I
25f40 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
25f50 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c  ointer, offset),
25f60 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
25f70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
25f80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
25f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
25fe0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25ff0 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73   /// Writes a <s
26000 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
26010 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
26020 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
26030 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
26040 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
26050 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
26060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
26070 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
26080 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
26090 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
260a0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
260b0 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
260c0 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
260d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
260e0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
260f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
26100 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
26110 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26120 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
26130 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
26140 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
26150 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
26160 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
26170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
26180 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
26190 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
261a0 77 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74  written is locat
261b0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
261c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
261d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
261e0 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
261f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
26200 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
26210 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74  /> value to writ
26220 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
26230 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26240 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
26250 76 6f 69 64 20 57 72 69 74 65 44 6f 75 62 6c 65  void WriteDouble
26260 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
26270 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
26280 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
26290 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20  offset,..       
262a0 20 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75       double valu
262b0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
262c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
262d0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
262e0 20 20 20 20 43 68 65 63 6b 41 6c 69 67 6e 6d 65      CheckAlignme
262f0 6e 74 28 22 57 72 69 74 65 44 6f 75 62 6c 65 22  nt("WriteDouble"
26300 2c 20 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65  , pointer, offse
26310 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  t, sizeof(double
26320 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  ));..#endif....#
26330 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26340 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26350 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
26360 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70 6f  al.WriteInt64(po
26370 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 0d 0a  inter, offset,..
26380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26390 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 44 6f 75  BitConverter.Dou
263a0 62 6c 65 54 6f 49 6e 74 36 34 42 69 74 73 28 76  bleToInt64Bits(v
263b0 61 6c 75 65 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a  alue));..#else..
263c0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
263d0 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49  hal.WriteInt64(I
263e0 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
263f0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c  ointer, offset),
26400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26410 20 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 54    BitConverter.T
26420 6f 49 6e 74 36 34 28 42 69 74 43 6f 6e 76 65 72  oInt64(BitConver
26430 74 65 72 2e 47 65 74 42 79 74 65 73 28 76 61 6c  ter.GetBytes(val
26440 75 65 29 2c 20 30 29 29 3b 0d 0a 23 65 6e 64 69  ue), 0));..#endi
26450 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
26460 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
264b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
264c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
264d0 20 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c    /// Writes a <
264e0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
264f0 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68  " /> value to th
26500 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
26510 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
26520 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
26530 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
26540 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
26550 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
26560 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
26570 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
26580 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
26590 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
265a0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
265b0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
265c0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
265d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
265e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
265f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
26600 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
26610 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
26620 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
26630 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
26640 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
26650 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
26660 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
26670 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65  " /> value to be
26680 20 77 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61   written is loca
26690 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
266a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
266b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
266c0 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
266d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
266e0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
266f0 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69   /> value to wri
26700 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  te...        ///
26710 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
26720 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
26730 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74 50 74   void WriteIntPt
26740 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
26750 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
26760 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
26770 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
26780 20 20 20 20 20 20 49 6e 74 50 74 72 20 76 61 6c        IntPtr val
26790 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
267a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
267b0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
267c0 20 20 20 20 20 43 68 65 63 6b 41 6c 69 67 6e 6d       CheckAlignm
267d0 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
267e0 20 20 20 20 20 20 22 57 72 69 74 65 49 6e 74 50        "WriteIntP
267f0 74 72 28 70 6f 69 6e 74 65 72 29 22 2c 20 70 6f  tr(pointer)", po
26800 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 49  inter, offset, I
26810 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
26820 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
26830 6b 41 6c 69 67 6e 6d 65 6e 74 28 22 57 72 69 74  kAlignment("Writ
26840 65 49 6e 74 50 74 72 28 76 61 6c 75 65 29 22 2c  eIntPtr(value)",
26850 20 76 61 6c 75 65 2c 20 30 2c 20 49 6e 74 50 74   value, 0, IntPt
26860 72 2e 53 69 7a 65 29 3b 0d 0a 23 65 6e 64 69 66  r.Size);..#endif
26870 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26880 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26890 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
268a0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
268b0 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  Ptr(pointer, off
268c0 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  set, value);..#e
268d0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
268e0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
268f0 74 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66  tPtr(IntPtrForOf
26900 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
26910 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a  fset), value);..
26920 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
26930 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
26940 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
26950 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26990 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
269a0 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65      #region Obje
269b0 63 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ct Helper Method
269c0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
269d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
269e0 20 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20    /// Generates 
269f0 61 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75  a hash code valu
26a00 65 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74  e for the object
26a10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
26a20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
26a30 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
26a40 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
26a50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a       /// The obj
26a60 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65  ect instance use
26a70 64 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74  d to calculate t
26a80 68 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20  he hash code... 
26a90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
26aa0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
26ab0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
26ac0 65 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20  entity">..      
26ad0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
26ae0 66 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65  f different obje
26af0 63 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74  ct instances wit
26b00 68 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  h the same value
26b10 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20   should..       
26b20 20 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69   /// generate di
26b30 66 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64  fferent hash cod
26b40 65 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63  es, where applic
26b50 61 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61  able.  This para
26b60 6d 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  meter..        /
26b70 2f 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  // has no effect
26b80 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   on the .NET Com
26b90 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
26ba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
26bb0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
26bc0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
26bd0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61        /// The ha
26be0 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f  sh code value -O
26bf0 52 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f  R- zero if the o
26c00 62 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a  bject is null...
26c10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
26c20 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26c30 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
26c40 74 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a  t GetHashCode(..
26c50 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
26c60 63 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20  ct value,..     
26c70 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e         bool iden
26c80 74 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tity..          
26c90 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
26ca0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26cb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26cc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26cd0 69 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20  identity)..     
26ce0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26cf0 6e 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73  n RuntimeHelpers
26d00 2e 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c  .GetHashCode(val
26d10 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
26d20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26d30 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72  value == null) r
26d40 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20  eturn 0;..      
26d50 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
26d60 75 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  ue.GetHashCode()
26d70 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
26d80 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
26d90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
26da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26de0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
26df0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
26e00 65 74 68 6f 64 73 0d 0a 23 69 66 20 44 45 42 55  ethods..#if DEBU
26e10 47 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  G..        /// <
26e20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26e30 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
26e40 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 74 68  o verify that th
26e50 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69  e specified nati
26e60 76 65 20 70 6f 69 6e 74 65 72 20 69 73 20 70 72  ve pointer is pr
26e70 6f 70 65 72 6c 79 0d 0a 20 20 20 20 20 20 20 20  operly..        
26e80 2f 2f 2f 20 61 6c 69 67 6e 65 64 20 66 6f 72 20  /// aligned for 
26e90 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
26ea0 64 61 74 61 20 76 61 6c 75 65 2e 20 20 49 66 20  data value.  If 
26eb0 74 68 61 74 20 69 73 20 6e 6f 74 20 74 68 65 20  that is not the 
26ec0 63 61 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f  case,..        /
26ed0 2f 2f 20 61 20 6d 65 73 73 61 67 65 20 77 69 6c  // a message wil
26ee0 6c 20 62 65 20 73 65 6e 74 20 74 6f 20 74 68 65  l be sent to the
26ef0 20 6c 6f 67 67 69 6e 67 20 73 75 62 73 79 73 74   logging subsyst
26f00 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  em...        ///
26f10 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
26f20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26f30 6e 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a 20 20  name="type">..  
26f40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 79        /// The ty
26f50 70 65 20 6f 66 20 6f 70 65 72 61 74 69 6f 6e 20  pe of operation 
26f60 62 65 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 20  being performed 
26f70 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 20 20  by the caller.  
26f80 54 68 69 73 20 76 61 6c 75 65 0d 0a 20 20 20 20  This value..    
26f90 20 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 20 75      /// may be u
26fa0 73 65 64 20 77 69 74 68 69 6e 20 64 69 61 67 6e  sed within diagn
26fb0 6f 73 74 69 63 20 6d 65 73 73 61 67 65 73 2e 0d  ostic messages..
26fc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
26fd0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
26fe0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26ff0 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
27000 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
27010 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
27020 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
27030 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
27040 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
27050 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
27060 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
27070 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27080 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
27090 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
270a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
270b0 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
270c0 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
270d0 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
270e0 65 20 74 68 65 20 64 61 74 61 0d 0a 20 20 20 20  e the data..    
270f0 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f      /// value to
27100 20 62 65 20 72 65 61 64 20 6f 72 20 77 72 69 74   be read or writ
27110 74 65 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ten...        //
27120 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27130 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
27140 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20  ame="size">..   
27150 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
27160 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  e, in bytes, of 
27170 74 68 65 20 64 61 74 61 20 76 61 6c 75 65 2e 0d  the data value..
27180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
27190 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
271a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
271b0 6f 69 64 20 43 68 65 63 6b 41 6c 69 67 6e 6d 65  oid CheckAlignme
271c0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
271d0 20 73 74 72 69 6e 67 20 74 79 70 65 2c 0d 0a 20   string type,.. 
271e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
271f0 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
27200 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
27210 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
27220 20 69 6e 74 20 73 69 7a 65 0d 0a 20 20 20 20 20   int size..     
27230 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
27240 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27250 20 49 6e 74 50 74 72 20 73 61 76 65 64 50 6f 69   IntPtr savedPoi
27260 6e 74 65 72 20 3d 20 70 6f 69 6e 74 65 72 3b 0d  nter = pointer;.
27270 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
27280 66 20 28 6f 66 66 73 65 74 20 21 3d 20 30 29 0d  f (offset != 0).
27290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
272a0 20 70 6f 69 6e 74 65 72 20 3d 20 6e 65 77 20 49   pointer = new I
272b0 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f  ntPtr(pointer.To
272c0 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74  Int64() + offset
272d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
272e0 20 20 69 66 20 28 28 70 6f 69 6e 74 65 72 2e 54    if ((pointer.T
272f0 6f 49 6e 74 36 34 28 29 20 25 20 73 69 7a 65 29  oInt64() % size)
27300 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   != 0)..        
27310 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27320 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67         SQLiteLog
27330 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69  .LogMessage(SQLi
27340 74 65 45 72 72 6f 72 43 6f 64 65 2e 57 61 72 6e  teErrorCode.Warn
27350 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
27360 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72            Helper
27370 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
27380 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f  rmat(CultureInfo
27390 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
273a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
273b0 20 20 20 20 20 20 22 7b 30 7d 3a 20 70 6f 69 6e        "{0}: poin
273c0 74 65 72 20 7b 31 7d 20 61 6e 64 20 6f 66 66 73  ter {1} and offs
273d0 65 74 20 7b 32 7d 20 6e 6f 74 20 61 6c 69 67 6e  et {2} not align
273e0 65 64 20 74 6f 20 7b 33 7d 3a 20 7b 34 7d 22 2c  ed to {3}: {4}",
273f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27400 20 20 20 20 20 20 74 79 70 65 2c 20 73 61 76 65        type, save
27410 64 50 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  dPointer, offset
27420 2c 20 73 69 7a 65 2c 0d 0a 23 69 66 20 21 50 4c  , size,..#if !PL
27430 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27440 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
27450 20 20 20 20 20 20 20 20 20 20 20 20 20 45 6e 76               Env
27460 69 72 6f 6e 6d 65 6e 74 2e 53 74 61 63 6b 54 72  ironment.StackTr
27470 61 63 65 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ace..#else..    
27480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27490 6e 75 6c 6c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  null..#endif..  
274a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274b0 20 20 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20    ));..         
274c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
274d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
274e0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
274f0 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
27500 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
27510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27550 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
27560 67 69 6f 6e 20 53 51 4c 69 74 65 4d 6f 64 75 6c  gion SQLiteModul
27570 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20 20  e Base Class..  
27580 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
27590 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
275a0 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61  ass represents a
275b0 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61 6c   managed virtual
275c0 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 69 6d   table module im
275d0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
275e0 20 20 20 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74     /// It is not
275f0 20 73 65 61 6c 65 64 20 61 6e 64 20 6d 75 73 74   sealed and must
27600 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
27610 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61  base class for a
27620 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72  ny..    /// user
27630 2d 64 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c  -defined virtual
27640 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63 6c   table module cl
27650 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65  asses implemente
27660 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64  d in managed cod
27670 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
27680 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
27690 69 63 20 61 62 73 74 72 61 63 74 20 63 6c 61 73  ic abstract clas
276a0 73 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 3a  s SQLiteModule :
276b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 53  ..            IS
276c0 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
276d0 6c 65 2c 20 2f 2a 49 53 51 4c 69 74 65 4e 61 74  le, /*ISQLiteNat
276e0 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f 0d 0a 20 20  iveModule,*/..  
276f0 20 20 20 20 20 20 20 20 20 20 49 44 69 73 70 6f            IDispo
27700 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41  sable /* NOT SEA
27710 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20  LED */..    {.. 
27720 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53         #region S
27730 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27740 65 20 50 72 69 76 61 74 65 20 43 6c 61 73 73 0d  e Private Class.
27750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
27760 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27770 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 69  /// This class i
27780 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 3c 73  mplements the <s
27790 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
277a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
277b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
277c0 74 65 72 66 61 63 65 20 62 79 20 66 6f 72 77 61  terface by forwa
277d0 72 64 69 6e 67 20 74 68 6f 73 65 20 6d 65 74 68  rding those meth
277e0 6f 64 20 63 61 6c 6c 73 20 74 6f 20 74 68 65 0d  od calls to the.
277f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
27800 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
27810 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
27820 69 6e 73 74 61 6e 63 65 20 69 74 20 63 6f 6e 74  instance it cont
27830 61 69 6e 73 2e 20 20 49 66 20 74 68 65 0d 0a 20  ains.  If the.. 
27840 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61         /// conta
27850 69 6e 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  ined <see cref="
27860 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
27870 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
27880 20 69 73 20 6e 75 6c 6c 2c 20 61 6c 6c 0d 0a 20   is null, all.. 
27890 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c         /// the <
278a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
278b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
278c0 3e 20 6d 65 74 68 6f 64 73 20 73 69 6d 70 6c 79  > methods simply
278d0 20 67 65 6e 65 72 61 74 65 20 61 6e 0d 0a 20 20   generate an..  
278e0 20 20 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72 2e        /// error.
278f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
27900 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27910 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
27920 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4e 61 74   class SQLiteNat
27930 69 76 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20 20  iveModule :..   
27940 20 20 20 20 20 20 20 20 20 20 20 20 20 49 53 51               ISQ
27950 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27960 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  , IDisposable.. 
27970 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27980 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
27990 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
279a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
279b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
279c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
279d0 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74 68   is the value th
279e0 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  at is always use
279f0 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45 72  d for the "logEr
27a00 72 6f 72 73 22 0d 0a 20 20 20 20 20 20 20 20 20  rors"..         
27a10 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72     /// parameter
27a20 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75 73 20   to the various 
27a30 73 74 61 74 69 63 20 65 72 72 6f 72 20 68 61 6e  static error han
27a40 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20 70 72  dling methods pr
27a50 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20 20  ovided..        
27a60 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20 3c      /// by the <
27a70 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
27a80 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73  Module" /> class
27a90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27aa0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
27ab0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
27ac0 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65  te const bool De
27ad0 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 20 3d  faultLogErrors =
27ae0 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
27af0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
27b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
27b40 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
27b50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27b60 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
27b70 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 69  the value that i
27b80 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f  s always used fo
27b90 72 20 74 68 65 20 22 6c 6f 67 45 78 63 65 70 74  r the "logExcept
27ba0 69 6f 6e 73 22 0d 0a 20 20 20 20 20 20 20 20 20  ions"..         
27bb0 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72     /// parameter
27bc0 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75 73 20   to the various 
27bd0 73 74 61 74 69 63 20 65 72 72 6f 72 20 68 61 6e  static error han
27be0 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20 70 72  dling methods pr
27bf0 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20 20  ovided..        
27c00 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20 3c      /// by the <
27c10 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
27c20 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73  Module" /> class
27c30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27c40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
27c50 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
27c60 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65  te const bool De
27c70 66 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f  faultLogExceptio
27c80 6e 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  ns = true;....  
27c90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
27ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27cf0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
27d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
27d10 20 69 73 20 74 68 65 20 65 72 72 6f 72 20 6d 65   is the error me
27d20 73 73 61 67 65 20 74 65 78 74 20 75 73 65 64 20  ssage text used 
27d30 77 68 65 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e  when the contain
27d40 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
27d50 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
27d60 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
27d70 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
27d80 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65  is not available
27d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27da0 2f 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e  / for any reason
27db0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27dc0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
27dd0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
27de0 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
27df0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
27e00 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 20 3d  leErrorMessage =
27e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27e20 20 20 22 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65    "native module
27e30 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
27e40 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 22 3b 0d  not available";.
27e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
27e60 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
27e70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
27e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27ec0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
27ed0 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
27ee0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27ef0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f00 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
27f10 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
27f20 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
27f30 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20  t instance used 
27f40 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20  to provide..    
27f50 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69          /// an i
27f60 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
27f70 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27f80 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27f90 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ule" />..       
27fa0 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61       /// interfa
27fb0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce...           
27fc0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
27fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
27fe0 76 61 74 65 20 53 51 4c 69 74 65 4d 6f 64 75 6c  vate SQLiteModul
27ff0 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  e module;..     
28000 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
28010 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
28020 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28060 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28070 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
28080 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
28090 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
280a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
280b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
280c0 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
280d0 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
280e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
280f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
28100 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28110 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
28120 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  le">..          
28130 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
28140 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
28150 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
28160 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70 72  tance used to pr
28170 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20 20  ovide..         
28180 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d     /// an implem
28190 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
281a0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
281b0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
281c0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  />..            
281d0 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a  /// interface...
281e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
281f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28200 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
28210 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  iteNativeModule(
28220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28230 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d    SQLiteModule m
28240 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  odule..         
28250 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
28260 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28270 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 6f           this.mo
28280 64 75 6c 65 20 3d 20 6d 6f 64 75 6c 65 3b 0d 0a  dule = module;..
28290 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
282a0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
282b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
282c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28300 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
28310 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
28320 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20 4d  Private Static M
28330 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
28340 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28350 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28360 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61 62 6c  // Sets the tabl
28370 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  e error message 
28380 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64 69  to one that indi
28390 63 61 74 65 73 20 74 68 65 20 6e 61 74 69 76 65  cates the native
283a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
283b0 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  / module impleme
283c0 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61  ntation is not a
283d0 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
283e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
283f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
28400 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28410 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
28420 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65           /// The
28430 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
28440 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
28450 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
28460 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
28470 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28490 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
284a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65           /// The
284b0 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65 20 63   value of <see c
284c0 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72  ref="SQLiteError
284d0 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d  Code.Error" />..
284e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
284f0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
28500 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
28510 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45 72   static SQLiteEr
28520 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f  rorCode ModuleNo
28530 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
28540 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rror(..         
28550 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
28560 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
28570 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
28580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28590 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45         SetTableE
285a0 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 56 74 61 62  rror(null, pVtab
285b0 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f  , DefaultLogErro
285c0 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs,..           
285d0 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74           Default
285e0 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 4d  LogExceptions, M
285f0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
28600 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
28610 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28620 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
28630 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
28640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
28650 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
286b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
286c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
286d0 20 53 65 74 73 20 74 68 65 20 74 61 62 6c 65 20   Sets the table 
286e0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f  error message to
286f0 20 6f 6e 65 20 74 68 61 74 20 69 6e 64 69 63 61   one that indica
28700 74 65 73 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  tes the native..
28710 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28720 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  module implement
28730 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61  ation is not ava
28740 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20  ilable...       
28750 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
28760 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
28770 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
28780 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
28790 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65           /// The
287a0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
287b0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
287c0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
287d0 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
287e0 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
287f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28800 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28810 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
28820 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28830 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
28840 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
28850 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
28860 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20  or" />...       
28870 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
28880 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28890 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
288a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
288b0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
288c0 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a  leCursorError(..
288d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288e0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
288f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28900 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
28910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28920 20 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72    SetCursorError
28930 28 6e 75 6c 6c 2c 20 70 43 75 72 73 6f 72 2c 20  (null, pCursor, 
28940 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73  DefaultLogErrors
28950 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28960 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 4c 6f         DefaultLo
28970 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 4d 6f 64  gExceptions, Mod
28980 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45  uleNotAvailableE
28990 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d  rrorMessage);...
289a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
289b0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
289c0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
289d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
289e0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
289f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
28a00 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
28a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
28a50 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
28a60 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
28a70 75 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ule Members..   
28a80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
28a90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
28aa0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28ab0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28ac0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28ad0 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
28ae0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28af0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
28b00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28b10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
28b20 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
28b30 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28b40 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28b50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
28b60 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
28b70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28b80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28b90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
28ba0 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20   name="pAux">.. 
28bb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28bc0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28bd0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28be0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
28bf0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28c00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
28c10 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
28c20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
28c30 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
28c40 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28c50 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28c60 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28c70 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
28c80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
28c90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28cb0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
28cc0 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  v">..           
28cd0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28ce0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28cf0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
28d00 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
28d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28d20 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
28d30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28d40 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
28d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28d60 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28d70 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28d80 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
28d90 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28da0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
28db0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
28dc0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28dd0 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20  me="pError">..  
28de0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28df0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28e00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28e10 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
28e20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28e30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28e40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
28e50 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
28e60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28e70 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28e80 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28e90 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
28ea0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28eb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
28ec0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
28ed0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
28ee0 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74  ErrorCode xCreat
28ef0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
28f00 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
28f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28f20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
28f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28f40 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
28f50 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
28f60 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
28f70 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
28f80 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
28f90 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
28fa0 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
28fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
28fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
28fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fe0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
28ff0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
29000 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
29010 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
29020 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29030 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
29040 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
29050 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
29060 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
29070 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
29080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29090 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
290a0 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72 20           pError 
290b0 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55  = SQLiteString.U
290c0 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
290d0 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ing(..          
290e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
290f0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
29100 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a  ErrorMessage);..
29110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29120 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
29130 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
29140 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or;..           
29150 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29160 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
29170 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 28   module.xCreate(
29180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29190 20 20 20 20 20 20 70 44 62 2c 20 70 41 75 78 2c        pDb, pAux,
291a0 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65 66   argc, argv, ref
291b0 20 70 56 74 61 62 2c 20 72 65 66 20 70 45 72 72   pVtab, ref pErr
291c0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
291d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
291e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
291f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29220 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
29230 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
29240 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
29250 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29260 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
29270 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
29280 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
29290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
292a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
292b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
292c0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e  aram name="pDb">
292d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
292e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
292f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29300 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
29310 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
29320 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29330 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29340 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
29350 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20  name="pAux">..  
29360 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29370 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29380 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29390 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
293a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
293b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
293c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
293d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
293e0 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
293f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29400 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29410 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29420 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
29430 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29440 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29450 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29460 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
29470 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
29480 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29490 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
294a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
294b0 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
294c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
294d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
294e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
294f0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
29500 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29510 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29520 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29530 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
29540 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
29550 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29560 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
29570 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
29580 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d   name="pError">.
29590 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
295a0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
295b0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
295c0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
295d0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
295e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
295f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29600 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
29610 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29620 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29630 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29640 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
29650 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
29660 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29670 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
29680 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
29690 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
296a0 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
296b0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
296c0 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20   pDb,..         
296d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
296e0 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ux,..           
296f0 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
29700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29710 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
29720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29730 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
29740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29750 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
29760 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
29770 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
29780 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29790 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
297a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
297b0 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
297c0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
297d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
297e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
297f0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
29800 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
29810 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29820 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
29830 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
29840 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
29860 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74  Error = SQLiteSt
29870 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46  ring.Utf8IntPtrF
29880 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
29890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298a0 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
298b0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
298c0 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ge);....        
298d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
298e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
298f0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
29900 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
29910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29920 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
29930 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
29940 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62               pDb
29950 2c 20 70 41 75 78 2c 20 61 72 67 63 2c 20 61 72  , pAux, argc, ar
29960 67 76 2c 20 72 65 66 20 70 56 74 61 62 2c 20 72  gv, ref pVtab, r
29970 65 66 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20  ef pError);..   
29980 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
29990 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
299a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
299e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
299f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
29a00 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29a10 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29a20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29a30 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f  le.xBestIndex" /
29a40 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
29a50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
29a60 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
29a70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
29a80 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
29a90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29aa0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29ab0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29ac0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
29ad0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29ae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29af0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29b00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29b10 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20  e="pIndex">..   
29b20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29b30 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29b40 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29b50 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
29b60 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29b70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29b80 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29b90 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
29ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29bb0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29bc0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29bd0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
29be0 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
29bf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29c00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
29c10 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
29c20 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
29c30 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
29c40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29c50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
29c60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29c70 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20  r pIndex..      
29c80 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29c90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
29cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29cc0 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
29cd0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
29ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29cf0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
29d00 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
29d10 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
29d20 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
29d30 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
29d40 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
29d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d60 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
29d70 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
29d80 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
29d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29da0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
29db0 42 65 73 74 49 6e 64 65 78 28 70 56 74 61 62 2c  BestIndex(pVtab,
29dc0 20 70 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20   pIndex);..     
29dd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
29de0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29e30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29e40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29e50 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29e60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29e70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29e80 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e  .xDisconnect" />
29e90 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
29eb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
29ec0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29ed0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
29ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29ef0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29f00 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29f10 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20  le.xDisconnect" 
29f20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29f40 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29f50 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
29f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29f70 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29f80 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29f90 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
29fa0 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
29fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29fc0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
29fd0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
29fe0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
29ff0 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
2a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2a010 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
2a020 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2a030 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a060 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2a070 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2a080 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a090 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2a0a0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2a0b0 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2a0c0 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2a0d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2a0e0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2a0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a100 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2a110 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2a120 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2a130 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a140 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2a150 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 70 56 74  .xDisconnect(pVt
2a160 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
2a170 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2a180 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2a1d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2a1e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2a1f0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2a200 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2a210 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
2a220 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
2a230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a240 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2a250 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2a260 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2a270 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2a280 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2a290 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2a2a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
2a2b0 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  roy" /> method..
2a2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a2d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2a2e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2a2f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2a300 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2a310 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2a320 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  NativeModule.xDe
2a330 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
2a340 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a350 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2a360 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2a370 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2a380 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  e xDestroy(..   
2a390 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2a3a0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
2a3b0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2a3c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2a3e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a3f0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
2a400 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
2a410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a420 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2a430 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2a440 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
2a450 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
2a460 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2a470 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2a480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a490 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2a4a0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
2a4b0 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
2a4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a4d0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2a4e0 78 44 65 73 74 72 6f 79 28 70 56 74 61 62 29 3b  xDestroy(pVtab);
2a4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2a500 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a550 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2a560 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2a570 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a580 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2a590 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2a5a0 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
2a5b0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2a5c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2a5d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2a5e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2a5f0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2a600 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a610 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a620 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a630 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
2a640 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a650 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a660 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a670 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
2a680 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
2a690 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2a6a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2a6b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2a6c0 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
2a6d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a6e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2a6f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2a700 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2a710 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2a720 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2a730 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2a740 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
2a750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a760 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2a770 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2a780 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a790 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20   xOpen(..       
2a7a0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2a7b0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2a7c0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
2a7d0 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
2a7e0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2a7f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a820 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2a830 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2a840 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a850 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2a860 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2a870 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2a880 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2a890 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2a8a0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2a8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8c0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2a8d0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2a8e0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2a8f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a900 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2a910 2e 78 4f 70 65 6e 28 70 56 74 61 62 2c 20 72 65  .xOpen(pVtab, re
2a920 66 20 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  f pCursor);..   
2a930 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2a940 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a990 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a9a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a9b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2a9c0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2a9d0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2a9e0 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65  le.xClose" /> me
2a9f0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2aa00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2aa10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2aa20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2aa30 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
2aa40 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2aa50 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2aa60 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2aa70 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74  e.xClose" /> met
2aa80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2aa90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2aaa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2aab0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2aac0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2aad0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2aae0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2aaf0 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74  e.xClose" /> met
2ab00 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ab10 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2ab20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2ab30 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2ab40 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20  Code xClose(..  
2ab50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2ab60 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
2ab70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2ab80 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2ab90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aba0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2abb0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2abc0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2abd0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
2abe0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2abf0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2ac00 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
2ac10 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
2ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2ac30 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2ac40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ac50 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2ac60 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
2ac70 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
2ac80 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
2ac90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2aca0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 28 70 43 75  odule.xClose(pCu
2acb0 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
2acc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2acd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2ad20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2ad30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2ad40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2ad50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2ad60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2ad70 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
2ad80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ad90 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2ada0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2adb0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
2adc0 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
2add0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2ade0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2adf0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2ae00 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
2ae10 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ae20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2ae30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2ae40 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d  ram name="idxNum
2ae50 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2ae60 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2ae70 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2ae80 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2ae90 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2aea0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2aeb0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2aec0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2aed0 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22 3e 0d   name="idxStr">.
2aee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2aef0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2af00 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2af10 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
2af20 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2af30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2af40 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2af50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2af60 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
2af70 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2af80 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2af90 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2afa0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
2afb0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2afc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2afd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2afe0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2aff0 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
2b000 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2b010 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b020 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2b030 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
2b040 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b050 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2b060 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2b070 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2b080 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2b090 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2b0a0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2b0b0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
2b0c0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2b0d0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2b0e0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2b0f0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2b100 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  de xFilter(..   
2b110 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2b120 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
2b130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
2b140 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20  t idxNum,..     
2b150 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2b160 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20  r idxStr,..     
2b170 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
2b180 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
2b190 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
2b1a0 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  v..             
2b1b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2b1c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b1d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2b1e0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2b1f0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
2b200 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
2b210 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b230 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2b240 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
2b250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b260 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
2b270 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2b280 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2b290 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
2b2a0 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
2b2b0 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20  pCursor);....   
2b2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2b2d0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74  urn module.xFilt
2b2e0 65 72 28 70 43 75 72 73 6f 72 2c 20 69 64 78 4e  er(pCursor, idxN
2b2f0 75 6d 2c 20 69 64 78 53 74 72 2c 20 61 72 67 63  um, idxStr, argc
2b300 2c 20 61 72 67 76 29 3b 0d 0a 20 20 20 20 20 20  , argv);..      
2b310 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b320 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b370 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2b380 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b390 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2b3a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2b3b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2b3c0 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64  xNext" /> method
2b3d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b3e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2b3f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b400 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
2b410 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
2b420 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2b430 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b440 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e  eNativeModule.xN
2b450 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ext" /> method..
2b460 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b470 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2b480 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2b490 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2b4a0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2b4b0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2b4c0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65  NativeModule.xNe
2b4d0 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  xt" /> method...
2b4e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b4f0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2b500 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2b510 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2b520 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
2b530 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2b540 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
2b550 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2b560 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b570 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2b580 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2b590 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2b5a0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2b5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b5c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b5d0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2b5e0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2b5f0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2b600 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2b610 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2b620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2b630 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2b640 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72  vailableCursorEr
2b650 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d  ror(pCursor);...
2b660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b670 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
2b680 4e 65 78 74 28 70 43 75 72 73 6f 72 29 3b 0d 0a  Next(pCursor);..
2b690 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2b6a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2b700 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2b710 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2b720 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2b730 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2b740 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d  odule.xEof" /> m
2b750 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2b760 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b770 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2b780 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2b790 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
2b7a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2b7b0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2b7c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2b7d0 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68  le.xEof" /> meth
2b7e0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2b7f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2b800 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b810 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2b820 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2b830 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2b840 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2b850 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64  .xEof" /> method
2b860 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b870 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2b880 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2b890 63 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20  c int xEof(..   
2b8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2b8b0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
2b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2b8d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b8f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2b900 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
2b910 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
2b920 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2b930 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2b940 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2b950 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
2b960 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
2b970 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2b980 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2b990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b9a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b9b0 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f          ModuleNo
2b9c0 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
2b9d0 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
2b9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b9f0 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a       return 1;..
2ba00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2ba20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2ba30 6c 65 2e 78 45 6f 66 28 70 43 75 72 73 6f 72 29  le.xEof(pCursor)
2ba40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2ba50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ba60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2baa0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2bab0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2bac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bad0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2bae0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2baf0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
2bb00 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2bb10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2bb20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2bb30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2bb40 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
2bb50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bb60 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2bb70 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2bb80 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
2bb90 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2bba0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2bbb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2bbc0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2bbd0 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d  ame="pContext">.
2bbe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bbf0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2bc00 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2bc10 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
2bc20 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2bc30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2bc40 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2bc50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2bc60 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20  me="index">..   
2bc70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2bc80 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2bc90 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2bca0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
2bcb0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2bcc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2bcd0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2bce0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2bcf0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2bd00 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2bd10 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2bd20 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
2bd30 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2bd40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2bd50 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2bd60 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2bd70 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e  rrorCode xColumn
2bd80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2bd90 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2bda0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
2bdb0 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74      IntPtr pCont
2bdc0 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ext,..          
2bdd0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d        int index.
2bde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bdf0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2be00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2be10 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2be20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2be30 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2be40 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2be50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2be60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2be70 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2be80 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2be90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bea0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2beb0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2bec0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2bed0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2bee0 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43  leCursorError(pC
2bef0 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ursor);....     
2bf00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2bf10 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  n module.xColumn
2bf20 28 70 43 75 72 73 6f 72 2c 20 70 43 6f 6e 74 65  (pCursor, pConte
2bf30 78 74 2c 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  xt, index);..   
2bf40 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2bf50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2bf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2bfa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bfb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2bfc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2bfd0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2bfe0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2bff0 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65  le.xRowId" /> me
2c000 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2c010 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2c020 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c030 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2c040 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
2c050 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2c060 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2c070 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2c080 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
2c090 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2c0a0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2c0b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c0c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77  <param name="row
2c0d0 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Id">..          
2c0e0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c0f0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c100 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2c110 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  wId" /> method..
2c120 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c130 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2c140 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2c150 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2c160 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c170 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c180 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2c190 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  wId" /> method..
2c1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c1b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2c1c0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2c1d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2c1e0 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20  xRowId(..       
2c1f0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2c200 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
2c210 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
2c220 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20  ng rowId..      
2c230 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2c240 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2c260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c270 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
2c280 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
2c290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c2a0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2c2b0 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2c2c0 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
2c2d0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
2c2e0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
2c2f0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
2c300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c310 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
2c320 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f  otAvailableCurso
2c330 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b  rError(pCursor);
2c340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c350 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2c360 65 2e 78 52 6f 77 49 64 28 70 43 75 72 73 6f 72  e.xRowId(pCursor
2c370 2c 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20  , ref rowId);.. 
2c380 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2c390 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c3e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c3f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c400 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c410 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c420 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c430 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e  dule.xUpdate" />
2c440 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2c450 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2c460 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2c470 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c480 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
2c490 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2c4a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2c4b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2c4c0 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d  le.xUpdate" /> m
2c4d0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2c4e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2c4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c500 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2c510 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgc">..         
2c520 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2c530 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c540 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55  eNativeModule.xU
2c550 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  pdate" /> method
2c560 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c570 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2c580 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2c590 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
2c5a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c5b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c5c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c5d0 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
2c5e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c5f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c600 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2c610 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2c620 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20  ame="rowId">..  
2c630 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c640 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c650 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c660 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e  dule.xUpdate" />
2c670 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2c680 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2c690 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2c6a0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
2c6b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2c6c0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2c6d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2c6e0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
2c6f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c700 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2c710 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2c720 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2c730 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74  ErrorCode xUpdat
2c740 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2c750 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2c760 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c770 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
2c780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2c790 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
2c7a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2c7b0 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
2c7c0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2c7d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2c7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c800 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2c810 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2c820 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c830 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2c840 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2c850 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2c860 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2c870 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2c880 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2c890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8a0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2c8b0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2c8c0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2c8d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c8e0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2c8f0 2e 78 55 70 64 61 74 65 28 70 56 74 61 62 2c 20  .xUpdate(pVtab, 
2c900 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65 66 20  argc, argv, ref 
2c910 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20 20 20  rowId);..       
2c920 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2c930 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2c980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
2c990 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2c9a0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2c9b0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2c9c0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2c9d0 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  Begin" /> method
2c9e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c9f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2ca00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ca10 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2ca20 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2ca30 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2ca40 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2ca50 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
2ca60 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  in" /> method...
2ca70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ca80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ca90 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2caa0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2cab0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2cac0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2cad0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
2cae0 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  in" /> method...
2caf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2cb00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2cb10 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2cb20 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2cb30 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20  Begin(..        
2cb40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2cb50 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
2cb60 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2cb70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2cb80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2cb90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2cba0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
2cbb0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2cbd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cbe0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2cbf0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
2cc00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2cc10 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2cc20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2cc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2cc40 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2cc50 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
2cc60 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
2cc70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2cc80 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69  urn module.xBegi
2cc90 6e 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  n(pVtab);..     
2cca0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ccb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2cd00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2cd10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2cd20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2cd30 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2cd40 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2cd50 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
2cd60 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2cd70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2cd80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2cd90 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
2cda0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
2cdb0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2cdc0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2cdd0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  NativeModule.xSy
2cde0 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nc" /> method...
2cdf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ce00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ce10 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2ce20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2ce30 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2ce40 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2ce50 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e  ativeModule.xSyn
2ce60 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  c" /> method... 
2ce70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ce80 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2ce90 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2cea0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
2ceb0 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ync(..          
2cec0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2ced0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
2cee0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2cef0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2cf00 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2cf10 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2cf20 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
2cf30 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
2cf40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2cf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2cf60 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2cf70 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
2cf80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2cf90 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2cfa0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2cfb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2cfc0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2cfd0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2cfe0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2cff0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d000 6e 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 28 70  n module.xSync(p
2d010 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
2d020 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2d030 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d070 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2d080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2d090 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2d0a0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2d0b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2d0c0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2d0d0 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64  ommit" /> method
2d0e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d0f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2d100 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2d110 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2d120 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2d130 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2d140 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2d150 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d  ativeModule.xCom
2d160 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  mit" /> method..
2d170 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d180 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2d190 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2d1a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2d1b0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2d1c0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2d1d0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
2d1e0 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  mmit" /> method.
2d1f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d200 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2d210 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2d220 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2d230 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20   xCommit(..     
2d240 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2d250 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
2d260 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2d270 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d280 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2d290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d2a0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2d2b0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2d2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2d2e0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2d2f0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2d300 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2d310 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2d320 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2d330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d340 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2d350 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2d360 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2d370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d380 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
2d390 6f 6d 6d 69 74 28 70 56 74 61 62 29 3b 0d 0a 20  ommit(pVtab);.. 
2d3a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2d3b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2d3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d400 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d410 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2d420 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d430 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d440 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d450 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20  dule.xRollback" 
2d460 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d470 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2d480 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2d490 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2d4a0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2d4b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d4c0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d4d0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d4e0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20  dule.xRollback" 
2d4f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d500 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2d510 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2d520 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2d530 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d540 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2d550 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2d560 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2d570 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  k" /> method... 
2d580 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2d590 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2d5a0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2d5b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
2d5c0 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
2d5d0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2d5e0 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
2d5f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2d600 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d610 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d630 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2d640 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2d650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d660 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2d670 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2d680 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2d690 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2d6a0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2d6b0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2d6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6d0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2d6e0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2d6f0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
2d700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d710 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f  eturn module.xRo
2d720 6c 6c 62 61 63 6b 28 70 56 74 61 62 29 3b 0d 0a  llback(pVtab);..
2d730 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2d740 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d7a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2d7b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2d7c0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2d7d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2d7e0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2d7f0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
2d800 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d810 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2d820 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2d830 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
2d840 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d850 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2d860 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2d870 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
2d880 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
2d890 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2d8a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2d8b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2d8c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 41 72 67  param name="nArg
2d8d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2d8e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2d8f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d900 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
2d910 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
2d920 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2d930 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2d940 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d950 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 61  <param name="zNa
2d960 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  me">..          
2d970 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2d980 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2d990 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
2d9a0 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
2d9b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d9c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2d9d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d9e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
2d9f0 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20 20  allback">..     
2da00 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2da10 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2da20 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2da30 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
2da40 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2da50 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2da60 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2da70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2da80 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
2da90 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2daa0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2dab0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2dac0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
2dad0 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
2dae0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2daf0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2db00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2db10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2db20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2db30 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2db40 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2db50 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
2db60 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2db70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2db80 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2db90 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 78      public int x
2dba0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
2dbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2dbc0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2dbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
2dbe0 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20  t nArg,..       
2dbf0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2dc00 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
2dc10 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
2dc20 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  teCallback callb
2dc30 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
2dc40 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
2dc50 20 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20   pClientData..  
2dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2dc70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2dca0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2dcb0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2dcc0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
2dcd0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2dce0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2dcf0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
2dd00 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
2dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2dd20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2dd30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dd40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2dd50 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
2dd60 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
2dd70 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 20  Error(pVtab);.. 
2dd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd90 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20     return 0;..  
2dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ddb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ddc0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2ddd0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
2dde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ddf0 20 20 20 20 20 70 56 74 61 62 2c 20 6e 41 72 67       pVtab, nArg
2de00 2c 20 7a 4e 61 6d 65 2c 20 72 65 66 20 63 61 6c  , zName, ref cal
2de10 6c 62 61 63 6b 2c 20 72 65 66 20 70 43 6c 69 65  lback, ref pClie
2de20 6e 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20  ntData);..      
2de30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2de40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2de50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2de90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2dea0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2deb0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2dec0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2ded0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2dee0 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  xRename" /> meth
2def0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2df00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2df10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2df20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2df30 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2df40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2df50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2df60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2df70 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
2df80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2df90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2dfa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2dfb0 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e  ram name="zNew">
2dfc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dfd0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2dfe0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2dff0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
2e000 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e010 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2e020 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2e030 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2e040 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2e050 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2e060 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2e070 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
2e080 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2e090 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e0a0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2e0b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2e0c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
2e0d0 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
2e0e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2e0f0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
2e100 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
2e110 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ew..            
2e120 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2e130 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e140 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2e150 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2e160 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
2e170 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
2e180 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2e190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2e1a0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2e1b0 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
2e1c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e1d0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2e1e0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2e1f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2e200 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2e210 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2e220 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2e230 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e240 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  n module.xRename
2e250 28 70 56 74 61 62 2c 20 7a 4e 65 77 29 3b 0d 0a  (pVtab, zNew);..
2e260 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2e270 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e2d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2e2e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2e2f0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2e300 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2e310 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2e320 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e330 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2e340 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2e350 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2e360 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
2e370 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e380 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2e390 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2e3a0 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
2e3b0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2e3c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e3d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2e3e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2e3f0 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74  name="iSavepoint
2e400 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2e410 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2e420 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2e430 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
2e440 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
2e450 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e460 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2e470 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2e480 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2e490 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2e4a0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2e4b0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2e4c0 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
2e4d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2e4e0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2e4f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2e500 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2e510 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74  rCode xSavepoint
2e520 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e530 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2e540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e550 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
2e560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e570 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2e580 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e590 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2e5a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2e5b0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
2e5c0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
2e5d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2e5f0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2e600 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
2e610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e620 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2e630 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2e640 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e650 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2e660 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
2e670 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
2e680 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e690 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  module.xSavepoin
2e6a0 74 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f  t(pVtab, iSavepo
2e6b0 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
2e6c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2e6d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2e6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e710 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e720 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2e730 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2e740 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2e750 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2e760 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
2e770 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  lease" /> method
2e780 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e790 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2e7a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e7b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2e7c0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2e7d0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2e7e0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2e7f0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
2e800 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ease" /> method.
2e810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e820 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2e830 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2e840 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f  am name="iSavepo
2e850 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  int">..         
2e860 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2e870 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2e880 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2e890 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f  elease" /> metho
2e8a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2e8b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2e8c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2e8d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2e8e0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2e8f0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2e900 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2e910 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
2e920 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2e930 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2e940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2e950 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2e960 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a  Code xRelease(..
2e970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e980 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2e990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2e9a0 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
2e9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2e9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2e9f0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
2ea00 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
2ea10 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
2ea20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2ea30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2ea40 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
2ea50 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
2ea60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2ea70 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2ea80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2ea90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
2eaa0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2eab0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
2eac0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2ead0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
2eae0 75 6c 65 2e 78 52 65 6c 65 61 73 65 28 70 56 74  ule.xRelease(pVt
2eaf0 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b  ab, iSavepoint);
2eb00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2eb10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2eb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2eb70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2eb80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2eb90 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2eba0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2ebb0 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2ebc0 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  kTo" /> method..
2ebd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ebe0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2ebf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2ec00 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
2ec10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ec20 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2ec30 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2ec40 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
2ec50 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64  ackTo" /> method
2ec60 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ec70 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2ec80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2ec90 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
2eca0 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
2ecb0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ecc0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ecd0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2ece0 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d  RollbackTo" /> m
2ecf0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2ed00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2ed10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ed20 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2ed30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2ed40 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2ed50 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2ed60 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
2ed70 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2ed80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2ed90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2eda0 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
2edb0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
2edc0 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
2edd0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2ede0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
2edf0 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61           int iSa
2ee00 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20  vepoint..       
2ee10 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2ee20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ee30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ee50 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2ee60 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2ee70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee80 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2ee90 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2eea0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2eeb0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2eec0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2eed0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eef0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2ef00 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2ef10 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2ef20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef30 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
2ef40 6f 6c 6c 62 61 63 6b 54 6f 28 70 56 74 61 62 2c  ollbackTo(pVtab,
2ef50 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20   iSavepoint);.. 
2ef60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2ef70 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
2ef80 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2ef90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2efa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2efb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2efd0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2efe0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
2eff0 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65  Disposable Membe
2f000 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
2f010 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2f020 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 44             /// D
2f030 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20  isposes of this 
2f040 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
2f050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f060 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f070 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2f080 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
2f090 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2f0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0b0 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
2f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0d0 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
2f0e0 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
2f0f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2f100 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2f110 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
2f120 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2f130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f160 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2f170 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
2f180 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
2f190 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  " Members..     
2f1a0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
2f1b0 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
2f1c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f1d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2f1e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73        /// Throws
2f1f0 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f   an <see cref="O
2f200 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63  bjectDisposedExc
2f210 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68  eption" /> if th
2f220 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  is object..     
2f230 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
2f240 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
2f250 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
2f260 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2f270 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2f280 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
2f290 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20  ckDisposed() /* 
2f2a0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2f2b0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
2f2c0 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
2f2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f2e0 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
2f2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2f300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f310 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2f320 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
2f330 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  ception(..      
2f340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f350 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 4e    typeof(SQLiteN
2f360 61 74 69 76 65 4d 6f 64 75 6c 65 29 2e 4e 61 6d  ativeModule).Nam
2f370 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2f380 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2f390 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2f3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f400 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2f410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 44             /// D
2f420 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20  isposes of this 
2f430 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
2f440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f450 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f460 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2f470 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f  aram name="dispo
2f480 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  sing">..        
2f490 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
2f4a0 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   if this method 
2f4b0 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 20  is being called 
2f4c0 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
2f4d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
2f4e0 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20  ref="Dispose()" 
2f4f0 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f  /> method.  Zero
2f500 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   if this method 
2f510 69 73 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20  is being..      
2f520 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64        /// called
2f530 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69   from the finali
2f540 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  zer...          
2f550 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2f560 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2f570 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64  ate /* protected
2f580 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64   virtual */ void
2f590 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
2f5a0 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
2f5b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f5c0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69           if (!di
2f5d0 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
2f5e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f600 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29  //if (disposing)
2f610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f620 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
2f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f640 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  /    ///////////
2f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f660 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
2f670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f680 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20  /    // dispose 
2f690 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
2f6a0 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
2f6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f6c0 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  /    ///////////
2f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
2f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f700 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
2f710 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2f720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f750 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65        // release
2f760 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75   unmanaged resou
2f770 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
2f780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f790 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2f7e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2f7f0 20 54 68 65 20 6d 6f 64 75 6c 65 20 69 73 20 6e   The module is n
2f800 6f 74 20 6f 77 6e 65 64 20 62 79 20 75 73 3b 20  ot owned by us; 
2f810 74 68 65 72 65 66 6f 72 65 2c 20 64 6f 20 6e 6f  therefore, do no
2f820 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
2f830 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2f840 64 69 73 70 6f 73 65 20 69 74 2e 0d 0a 20 20 20  dispose it...   
2f850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f860 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2f870 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
2f880 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule != null)..  
2f890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f8a0 20 20 20 20 20 20 6d 6f 64 75 6c 65 20 3d 20 6e        module = n
2f8b0 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
2f8c0 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
2f8d0 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
2f8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2f8f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2f900 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2f910 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2f920 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2f930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f960 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f970 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2f980 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20   Destructor..   
2f990 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
2f9a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2f9b0 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65      /// Finalize
2f9c0 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  s this object in
2f9d0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
2f9e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2f9f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2fa00 20 7e 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ~SQLiteNativeMo
2fa10 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  dule()..        
2fa20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2fa30 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66         Dispose(f
2fa40 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
2fa50 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2fa60 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
2fa70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2fa80 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2fa90 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2faa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2fae0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2faf0 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
2fb00 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ants..        //
2fb10 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2fb20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66       /// The def
2fb30 61 75 6c 74 20 76 65 72 73 69 6f 6e 20 6f 66 20  ault version of 
2fb40 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
2fb50 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  e3_module struct
2fb60 75 72 65 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20  ure in use...   
2fb70 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2fb80 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2fb90 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
2fba0 6f 6e 6c 79 20 69 6e 74 20 44 65 66 61 75 6c 74  only int Default
2fbb0 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 20 3d 20  ModuleVersion = 
2fbc0 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  2;..        #end
2fbd0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2fbe0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2fbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2fc30 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
2fc40 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
2fc50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2fc60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2fc70 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
2fc80 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6e 61   to store the na
2fc90 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64  tive sqlite3_mod
2fca0 75 6c 65 20 73 74 72 75 63 74 75 72 65 0d 0a 20  ule structure.. 
2fcb0 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
2fcc0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
2fcd0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
2fce0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2fcf0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2fd00 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
2fd10 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2fd20 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74  lite3_module nat
2fd30 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20  iveModule;....  
2fd40 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2fd90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2fda0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2fdb0 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
2fdc0 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20  s used to store 
2fdd0 74 68 65 20 64 65 73 74 72 75 63 74 6f 72 20 64  the destructor d
2fde0 65 6c 65 67 61 74 65 20 74 6f 20 62 65 20 70 61  elegate to be pa
2fdf0 73 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20  ssed to..       
2fe00 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20   /// the SQLite 
2fe10 63 6f 72 65 20 6c 69 62 72 61 72 79 20 76 69 61  core library via
2fe20 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72 65   the sqlite3_cre
2fe30 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
2fe40 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  odule()..       
2fe50 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a   /// function...
2fe60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2fe70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2fe80 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61  private UnsafeNa
2fe90 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73  tiveMethods.xDes
2fea0 74 72 6f 79 4d 6f 64 75 6c 65 20 64 65 73 74 72  troyModule destr
2feb0 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20  oyModule;....   
2fec0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ff10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2ff20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2ff30 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2ff40 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 61   used to store a
2ff50 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
2ff60 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2ff70 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  odule..        /
2ff80 2f 2f 20 73 74 72 75 63 74 75 72 65 20 72 65 74  // structure ret
2ff90 75 72 6e 65 64 20 62 79 20 74 68 65 20 73 71 6c  urned by the sql
2ffa0 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
2ffb0 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 0d 0a 20  osable_module.. 
2ffc0 20 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74         /// funct
2ffd0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
2ffe0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2fff0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
30000 74 50 74 72 20 64 69 73 70 6f 73 61 62 6c 65 4d  tPtr disposableM
30010 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  odule;....      
30020 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30060 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
30070 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
30080 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
30090 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
300a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
300b0 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
300c0 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 62 6c  d to hold the bl
300d0 6f 63 6b 20 6f 66 20 6e 61 74 69 76 65 20 6d 65  ock of native me
300e0 6d 6f 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69  mory that contai
300f0 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ns..        /// 
30100 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
30110 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  e3_module struct
30120 75 72 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  ure associated w
30130 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 0d  ith this object.
30140 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
30150 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e 69  tance when runni
30160 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43  ng on the .NET C
30170 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
30180 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30190 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
301a0 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
301b0 72 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 3b  r pNativeModule;
301c0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
301d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
301e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
30220 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
30230 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
30240 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
30250 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
30260 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
30270 69 6e 73 74 61 6e 63 65 73 20 61 73 73 6f 63 69  instances associ
30280 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
30290 2f 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75  / with this modu
302a0 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76 65 20  le.  The native 
302b0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
302c0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
302d0 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
302e0 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75 73   structure is us
302f0 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74  ed to key into t
30300 68 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d  his collection..
30310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
30320 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
30330 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e   private Diction
30340 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69  ary<IntPtr, SQLi
30350 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 3e 20  teVirtualTable> 
30360 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20 20 20 20 20  tables;....     
30370 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
303c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
303d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
303e0 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75   This field is u
303f0 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65  sed to store the
30400 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
30410 75 72 73 6f 72 20 69 6e 73 74 61 6e 63 65 73 0d  ursor instances.
30420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
30430 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
30440 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e  s module.  The n
30450 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
30460 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
30470 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  / sqlite3_vtab_c
30480 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74  ursor derived st
30490 72 75 63 74 75 72 65 20 69 73 20 75 73 65 64 20  ructure is used 
304a0 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73  to key into this
304b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
304c0 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  llection...     
304d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
304e0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
304f0 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e  te Dictionary<In
30500 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74  tPtr, SQLiteVirt
30510 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e 20  ualTableCursor> 
30520 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a 20 20 20 20  cursors;....    
30530 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
30580 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
30590 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
305a0 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
305b0 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
305c0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
305d0 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63  function instanc
305e0 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
305f0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
30600 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68  this module.  Th
30610 65 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69  e case-insensiti
30620 76 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65  ve function name
30630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ..        /// an
30640 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  d the number of 
30650 61 72 67 75 6d 65 6e 74 73 20 28 77 69 74 68 20  arguments (with 
30660 2d 31 20 6d 65 61 6e 69 6e 67 20 22 61 6e 79 22  -1 meaning "any"
30670 29 20 61 72 65 20 75 73 65 64 20 74 6f 0d 0a 20  ) are used to.. 
30680 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74         /// const
30690 72 75 63 74 20 74 68 65 20 73 74 72 69 6e 67 20  ruct the string 
306a0 74 68 61 74 20 69 73 20 75 73 65 64 20 74 6f 20  that is used to 
306b0 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20 63 6f  key into this co
306c0 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  llection...     
306d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
306e0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
306f0 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  te Dictionary<st
30700 72 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e 63  ring, SQLiteFunc
30710 74 69 6f 6e 3e 20 66 75 6e 63 74 69 6f 6e 73 3b  tion> functions;
30720 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
30730 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
30740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30780 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
30790 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
307a0 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  c Constructors..
307b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
307c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
307d0 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
307e0 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
307f0 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
30800 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
30810 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
30820 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
30830 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
30840 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d  he name of the m
30850 6f 64 75 6c 65 2e 20 20 54 68 69 73 20 70 61 72  odule.  This par
30860 61 6d 65 74 65 72 20 63 61 6e 6e 6f 74 20 62 65  ameter cannot be
30870 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20   null...        
30880 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
30890 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
308a0 69 74 65 4d 6f 64 75 6c 65 28 73 74 72 69 6e 67  iteModule(string
308b0 20 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20   name)..        
308c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
308d0 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  f (name == null)
308e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
308f0 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
30900 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f  mentNullExceptio
30910 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20  n("name");....  
30920 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
30930 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20  ame = name;..   
30940 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 61           this.ta
30950 62 6c 65 73 20 3d 20 6e 65 77 20 44 69 63 74 69  bles = new Dicti
30960 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51  onary<IntPtr, SQ
30970 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
30980 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  >();..          
30990 20 20 74 68 69 73 2e 63 75 72 73 6f 72 73 20 3d    this.cursors =
309a0 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
309b0 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69  IntPtr, SQLiteVi
309c0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
309d0 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  >();..          
309e0 20 20 74 68 69 73 2e 66 75 6e 63 74 69 6f 6e 73    this.functions
309f0 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72   = new Dictionar
30a00 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74 65  y<string, SQLite
30a10 46 75 6e 63 74 69 6f 6e 3e 28 29 3b 0d 0a 20 20  Function>();..  
30a20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30a30 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
30a40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30a90 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
30aa0 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f  n Internal Metho
30ab0 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
30ac0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
30ad0 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65     /// Calls the
30ae0 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63   native SQLite c
30af0 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f  ore library in o
30b00 72 64 65 72 20 74 6f 20 63 72 65 61 74 65 20 61  rder to create a
30b10 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f   new..        //
30b20 2f 20 64 69 73 70 6f 73 61 62 6c 65 20 6d 6f 64  / disposable mod
30b30 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ule containing t
30b40 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
30b50 6e 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20 74  n of a virtual t
30b60 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
30b70 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
30b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
30b90 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20  m name="pDb">.. 
30ba0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
30bb0 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63  ative database c
30bc0 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 69 6e 74 65  onnection pointe
30bd0 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  r to use...     
30be0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
30bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
30c00 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
30c10 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f  /// Non-zero upo
30c20 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20  n success...    
30c30 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
30c40 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  s>..        inte
30c50 72 6e 61 6c 20 62 6f 6f 6c 20 43 72 65 61 74 65  rnal bool Create
30c60 44 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  DisposableModule
30c70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
30c80 6e 74 50 74 72 20 70 44 62 0d 0a 20 20 20 20 20  ntPtr pDb..     
30c90 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
30ca0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30cb0 20 69 66 20 28 64 69 73 70 6f 73 61 62 6c 65 4d   if (disposableM
30cc0 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  odule != IntPtr.
30cd0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
30ce0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
30cf0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
30d00 20 20 20 49 6e 74 50 74 72 20 70 4e 61 6d 65 20     IntPtr pName 
30d10 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
30d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
30d30 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
30d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30d50 20 20 70 4e 61 6d 65 20 3d 20 53 51 4c 69 74 65    pName = SQLite
30d60 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
30d70 72 46 72 6f 6d 53 74 72 69 6e 67 28 6e 61 6d 65  rFromString(name
30d80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
30d90 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
30da0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
30db0 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65 4d  3_module nativeM
30dc0 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  odule =..       
30dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6c 6c               All
30de0 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  ocateNativeModul
30df0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
30e00 20 20 20 20 20 20 20 20 64 65 73 74 72 6f 79 4d          destroyM
30e10 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73 61  odule = new Unsa
30e20 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
30e30 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 0d  xDestroyModule(.
30e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30e50 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64       xDestroyMod
30e60 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ule);....#if !PL
30e70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
30e80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
30e90 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 61           disposa
30ea0 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20  bleModule =..   
30eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ec0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
30ed0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 72 65  hods.sqlite3_cre
30ee0 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
30ef0 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
30f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f10 70 44 62 2c 20 70 4e 61 6d 65 2c 20 72 65 66 20  pDb, pName, ref 
30f20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49 6e  nativeModule, In
30f30 74 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74 72  tPtr.Zero, destr
30f40 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20  oyModule);....  
30f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
30f60 74 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c 65  turn (disposable
30f70 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72  Module != IntPtr
30f80 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c 69 66 20 21  .Zero);..#elif !
30f90 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
30fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30fb0 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c   disposableModul
30fc0 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
30fd0 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
30fe0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
30ff0 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
31000 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e  osable_module_in
31010 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
31020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
31030 44 62 2c 20 70 4e 61 6d 65 2c 20 41 6c 6c 6f 63  Db, pName, Alloc
31040 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  ateNativeModuleI
31050 6e 74 65 72 6f 70 28 29 2c 0d 0a 20 20 20 20 20  nterop(),..     
31060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31070 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69    nativeModule.i
31080 56 65 72 73 69 6f 6e 2c 20 6e 61 74 69 76 65 4d  Version, nativeM
31090 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 2c 0d 0a  odule.xCreate,..
310a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
310b0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
310c0 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 2c 20 6e 61  ule.xConnect, na
310d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
310e0 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20  Index,..        
310f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
31100 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
31110 63 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65 4d  connect, nativeM
31120 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 2c 0d  odule.xDestroy,.
31130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31140 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
31150 64 75 6c 65 2e 78 4f 70 65 6e 2c 20 6e 61 74 69  dule.xOpen, nati
31160 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 2c  veModule.xClose,
31170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31180 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
31190 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 2c 20 6e  odule.xFilter, n
311a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
311b0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
311c0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
311d0 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 2c 20 6e 61  eModule.xEof, na
311e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75  tiveModule.xColu
311f0 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn,..           
31200 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
31210 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 2c  veModule.xRowId,
31220 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55   nativeModule.xU
31230 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  pdate,..        
31240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
31250 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
31260 69 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  in, nativeModule
31270 2e 78 53 79 6e 63 2c 0d 0a 20 20 20 20 20 20 20  .xSync,..       
31280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31290 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
312a0 6d 6d 69 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75  mmit, nativeModu
312b0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20  le.xRollback,.. 
312c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312d0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
312e0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
312f0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
31300 52 65 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  Rename,..       
31310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31320 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61  nativeModule.xSa
31330 76 65 70 6f 69 6e 74 2c 20 6e 61 74 69 76 65 4d  vepoint, nativeM
31340 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 2c 0d  odule.xRelease,.
31350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31360 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
31370 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
31380 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64  , IntPtr.Zero, d
31390 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a  estroyModule);..
313a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
313b0 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f 73    return (dispos
313c0 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
313d0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c  tPtr.Zero);..#el
313e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
313f0 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
31400 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
31410 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
31420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31430 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
31440 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
31450 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31460 20 20 20 20 20 69 66 20 28 70 4e 61 6d 65 20 21       if (pName !
31470 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31490 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
314a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
314b0 6f 72 79 2e 46 72 65 65 28 70 4e 61 6d 65 29 3b  ory.Free(pName);
314c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
314d0 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 49 6e        pName = In
314e0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
314f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31500 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31510 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31520 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
31530 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
31540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
31580 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
31590 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64  n Private Method
315a0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
315b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
315c0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
315d0 64 20 69 73 20 63 61 6c 6c 65 64 20 62 79 20 74  d is called by t
315e0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
315f0 69 62 72 61 72 79 20 77 68 65 6e 20 74 68 65 20  ibrary when the 
31600 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
31610 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61 73 73 6f 63  /// module assoc
31620 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
31630 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
31640 69 73 20 62 65 69 6e 67 20 64 65 73 74 72 6f 79  is being destroy
31650 65 64 20 64 75 65 0d 0a 20 20 20 20 20 20 20 20  ed due..        
31660 2f 2f 2f 20 74 6f 20 69 74 73 20 70 61 72 65 6e  /// to its paren
31670 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 65 69  t connection bei
31680 6e 67 20 63 6c 6f 73 65 64 2e 20 20 49 74 20 6d  ng closed.  It m
31690 61 79 20 61 6c 73 6f 20 62 65 20 63 61 6c 6c 65  ay also be calle
316a0 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d by..        //
316b0 2f 20 74 68 65 20 22 76 74 73 68 69 6d 22 20 6d  / the "vtshim" m
316c0 6f 64 75 6c 65 20 69 66 2f 77 68 65 6e 20 74 68  odule if/when th
316d0 65 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73  e sqlite3_dispos
316e0 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74  e_module() funct
316f0 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ion..        ///
31700 20 69 73 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20   is called...   
31710 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
31720 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
31730 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
31740 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
31750 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
31760 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f  ive user-data po
31770 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65 64  inter associated
31780 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c   with this modul
31790 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20  e, as it was..  
317a0 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64        /// provid
317b0 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ed to the SQLite
317c0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68   core library wh
317d0 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f  en the native mo
317e0 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20  dule instance.. 
317f0 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63         /// was c
31800 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  reated...       
31810 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
31820 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76         private v
31830 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  oid xDestroyModu
31840 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
31850 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
31860 61 74 61 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ata /* NOT USED 
31870 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
31880 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
31890 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
318a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
318b0 45 3a 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74  E: At this point
318c0 2c 20 6a 75 73 74 20 6d 61 6b 65 20 73 75 72 65  , just make sure
318d0 20 74 68 61 74 20 74 68 69 73 20 6e 61 74 69 76   that this nativ
318e0 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  e module..      
318f0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68        //       h
31900 61 6e 64 6c 65 20 69 73 20 6e 6f 74 20 72 65 75  andle is not reu
31910 73 65 64 2c 20 6e 6f 72 20 70 61 73 73 65 64 20  sed, nor passed 
31920 69 6e 74 6f 20 74 68 65 20 6e 61 74 69 76 65 0d  into the native.
31930 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
31940 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 64 69        sqlite3_di
31950 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66  spose_module() f
31960 75 6e 63 74 69 6f 6e 20 6c 61 74 65 72 20 28 69  unction later (i
31970 2e 65 2e 20 69 66 2f 77 68 65 6e 0d 0a 20 20 20  .e. if/when..   
31980 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
31990 20 20 74 68 65 20 44 69 73 70 6f 73 65 28 29 20    the Dispose() 
319a0 6d 65 74 68 6f 64 20 6f 66 20 74 68 69 73 20 6f  method of this o
319b0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69  bject instance i
319c0 73 20 63 61 6c 6c 65 64 29 2e 0d 0a 20 20 20 20  s called)...    
319d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
319e0 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 61 62          disposab
319f0 6c 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74 50 74  leModule = IntPt
31a00 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
31a10 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
31a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31a70 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
31a80 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61          /// Crea
31a90 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  tes and returns 
31aa0 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
31ab0 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
31ac0 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  re using the..  
31ad0 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
31ae0 75 72 65 64 20 28 6f 72 20 64 65 66 61 75 6c 74  ured (or default
31af0 29 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  ) <see cref="ISQ
31b00 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
31b10 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
31b20 2f 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c  / interface impl
31b30 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20  ementation...   
31b40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
31b50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
31b60 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
31b70 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
31b80 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
31b90 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
31ba0 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
31bb0 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  (or..        ///
31bc0 20 64 65 66 61 75 6c 74 29 20 3c 73 65 65 20 63   default) <see c
31bd0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
31be0 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74  veModule" /> int
31bf0 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20 20  erface..        
31c00 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  /// implementati
31c10 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
31c20 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
31c30 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73       private Uns
31c40 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31c50 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20  .sqlite3_module 
31c60 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f  AllocateNativeMo
31c70 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  dule()..        
31c80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
31c90 65 74 75 72 6e 20 41 6c 6c 6f 63 61 74 65 4e 61  eturn AllocateNa
31ca0 74 69 76 65 4d 6f 64 75 6c 65 28 47 65 74 4e 61  tiveModule(GetNa
31cb0 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29  tiveModuleImpl()
31cc0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
31cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
31ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d20 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
31d30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31d40 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  K..        /// <
31d50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31d60 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e    /// Creates an
31d70 64 20 72 65 74 75 72 6e 73 20 61 20 6d 65 6d 6f  d returns a memo
31d80 72 79 20 62 6c 6f 63 6b 20 6f 62 74 61 69 6e 65  ry block obtaine
31d90 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  d from the SQLit
31da0 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20  e core..        
31db0 2f 2f 2f 20 6c 69 62 72 61 72 79 20 75 73 65 64  /// library used
31dc0 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6e 61   to store the na
31dd0 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64  tive sqlite3_mod
31de0 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 66 6f  ule structure fo
31df0 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  r this..        
31e00 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  /// object insta
31e10 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  nce when running
31e20 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   on the .NET Com
31e30 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
31e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
31e50 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
31e60 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
31e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
31e80 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
31e90 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  o the native sql
31ea0 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
31eb0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
31ec0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
31ed0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31ee0 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 4e  IntPtr AllocateN
31ef0 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72  ativeModuleInter
31f00 6f 70 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  op()..        {.
31f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
31f20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d  (pNativeModule =
31f30 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
31f40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31f60 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
31f70 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4e 6f 20 65     // HACK: No e
31f80 61 73 79 20 77 61 79 20 74 6f 20 64 65 74 65 72  asy way to deter
31f90 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f 66  mine the size of
31fa0 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
31fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
31fc0 20 20 20 20 20 20 73 71 6c 69 74 65 5f 6d 6f 64        sqlite_mod
31fd0 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 77 68  ule structure wh
31fe0 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68  en running on th
31ff0 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 20 20  e .NET..        
32000 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
32010 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
32020 72 6b 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 6a  rk; therefore, j
32030 75 73 74 20 62 61 73 65 20 74 68 65 20 73 69 7a  ust base the siz
32040 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
32050 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 20 77     //       on w
32060 68 61 74 20 77 65 20 6b 6e 6f 77 3a 0d 0a 20 20  hat we know:..  
32070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
32080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32090 20 20 2f 2f 20 20 20 20 20 20 20 54 68 65 72 65    //       There
320a0 20 69 73 20 6f 6e 65 20 69 6e 74 65 67 65 72 20   is one integer 
320b0 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  member...       
320c0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
320d0 20 20 54 68 65 72 65 20 61 72 65 20 32 32 20 66    There are 22 f
320e0 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20  unction pointer 
320f0 6d 65 6d 62 65 72 73 2e 0d 0a 20 20 20 20 20 20  members...      
32100 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
32110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e                pN
32120 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 53 51  ativeModule = SQ
32130 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63  LiteMemory.Alloc
32140 61 74 65 28 32 33 20 2a 20 49 6e 74 50 74 72 2e  ate(23 * IntPtr.
32150 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
32160 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e            if (pN
32170 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49  ativeModule == I
32180 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
32190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321a0 20 74 68 72 6f 77 20 6e 65 77 20 4f 75 74 4f 66   throw new OutOf
321b0 4d 65 6d 6f 72 79 45 78 63 65 70 74 69 6f 6e 28  MemoryException(
321c0 22 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22  "sqlite3_module"
321d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
321e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
321f0 20 72 65 74 75 72 6e 20 70 4e 61 74 69 76 65 4d   return pNativeM
32200 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
32210 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
32220 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
32270 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
32280 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
32290 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20 72  // Creates and r
322a0 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76  eturns the nativ
322b0 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20  e sqlite_module 
322c0 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20  structure using 
322d0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
322e0 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20   specified <see 
322f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
32300 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
32310 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20  terface..       
32320 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
32330 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
32340 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
32350 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32360 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
32370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
32380 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
32390 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
323a0 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d   /> interface im
323b0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 0d  plementation to.
323c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
323d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
323e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
323f0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
32400 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32410 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
32420 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
32430 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
32440 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
32450 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
32460 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
32470 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70  /> interface imp
32480 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20  lementation...  
32490 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
324a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
324b0 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69  ivate UnsafeNati
324c0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
324d0 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63 61 74  3_module Allocat
324e0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a  eNativeModule(..
324f0 20 20 20 20 20 20 20 20 20 20 20 20 49 53 51 4c              ISQL
32500 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20  iteNativeModule 
32510 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
32520 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
32530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61  ..            na
32540 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 6e 65 77  tiveModule = new
32550 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
32560 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
32570 75 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ule();..        
32580 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
32590 2e 69 56 65 72 73 69 6f 6e 20 3d 20 44 65 66 61  .iVersion = Defa
325a0 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e  ultModuleVersion
325b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
325c0 20 69 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e   if (module != n
325d0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
325e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
325f0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
32600 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20  e.xCreate = new 
32610 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
32620 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ods.xCreate(..  
32630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32640 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 29   module.xCreate)
32650 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32660 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
32670 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77  e.xConnect = new
32680 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
32690 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a  hods.xConnect(..
326a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326b0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e      module.xConn
326c0 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ect);....       
326d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
326e0 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
326f0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
32700 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74  iveMethods.xBest
32710 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
32720 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
32730 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 29 3b 0d  le.xBestIndex);.
32740 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32750 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
32760 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65  xDisconnect = ne
32770 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
32780 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63  thods.xDisconnec
32790 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
327a0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
327b0 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a  Disconnect);....
327c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327d0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  nativeModule.xDe
327e0 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61  stroy = new Unsa
327f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
32800 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20  xDestroy(..     
32810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
32820 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 29 3b  odule.xDestroy);
32830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32840 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
32850 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73  .xOpen = new Uns
32860 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
32870 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20  .xOpen(..       
32880 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
32890 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20  ule.xOpen);.... 
328a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
328b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f  ativeModule.xClo
328c0 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
328d0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c  ativeMethods.xCl
328e0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ose(..          
328f0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
32900 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20  .xClose);....   
32910 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
32920 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
32930 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  r = new UnsafeNa
32940 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c  tiveMethods.xFil
32950 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
32960 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
32970 2e 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20  .xFilter);....  
32980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
32990 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
329a0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
329b0 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74  iveMethods.xNext
329c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
329d0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 4e         module.xN
329e0 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
329f0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
32a00 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77  odule.xEof = new
32a10 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
32a20 68 6f 64 73 2e 78 45 6f 66 28 6d 6f 64 75 6c 65  hods.xEof(module
32a30 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20  .xEof);....     
32a40 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
32a50 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20  eModule.xColumn 
32a60 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
32a70 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d  veMethods.xColum
32a80 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
32a90 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
32aa0 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Column);....    
32ab0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
32ac0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20  veModule.xRowId 
32ad0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
32ae0 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64  veMethods.xRowId
32af0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32b00 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
32b10 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  owId);....      
32b20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
32b30 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
32b40 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
32b50 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
32b60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32b70 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 55         module.xU
32b80 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  pdate);....     
32b90 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
32ba0 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d  eModule.xBegin =
32bb0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
32bc0 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28  eMethods.xBegin(
32bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32be0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42 65        module.xBe
32bf0 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gin);....       
32c00 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
32c10 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65  odule.xSync = ne
32c20 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
32c30 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20  thods.xSync(..  
32c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c50 20 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 29 3b    module.xSync);
32c60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32c70 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
32c80 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55  .xCommit = new U
32c90 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
32ca0 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  ds.xCommit(..   
32cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32cc0 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 29   module.xCommit)
32cd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32ce0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
32cf0 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65  e.xRollback = ne
32d00 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
32d10 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28  thods.xRollback(
32d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32d30 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f        module.xRo
32d40 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20  llback);....    
32d50 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
32d60 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
32d70 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
32d80 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
32d90 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
32da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32db0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6e       module.xFin
32dc0 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20  dFunction);.... 
32dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
32de0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
32df0 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ame = new Unsafe
32e00 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
32e10 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
32e20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
32e30 6c 65 2e 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a  le.xRename);....
32e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e50 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61  nativeModule.xSa
32e60 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e  vepoint = new Un
32e70 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
32e80 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  s.xSavepoint(.. 
32e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ea0 20 20 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70     module.xSavep
32eb0 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  oint);....      
32ec0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
32ed0 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20  Module.xRelease 
32ee0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
32ef0 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61  veMethods.xRelea
32f00 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
32f10 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
32f20 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20  xRelease);....  
32f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
32f40 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
32f50 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73  backTo = new Uns
32f60 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
32f70 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20  .xRollbackTo(.. 
32f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f90 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62     module.xRollb
32fa0 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20  ackTo);..       
32fb0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32fc0 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
32fd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32fe0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
32ff0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20  odule.xCreate = 
33000 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
33010 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28  Methods.xCreate(
33020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33030 20 20 20 20 20 20 78 43 72 65 61 74 65 29 3b 0d        xCreate);.
33040 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33050 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
33060 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  xConnect = new U
33070 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
33080 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  ds.xConnect(..  
33090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330a0 20 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a    xConnect);....
330b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330c0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
330d0 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e  stIndex = new Un
330e0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
330f0 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  s.xBestIndex(.. 
33100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33110 20 20 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d     xBestIndex);.
33120 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33130 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
33140 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65  xDisconnect = ne
33150 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
33160 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63  thods.xDisconnec
33170 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
33180 20 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e          xDisconn
33190 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ect);....       
331a0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
331b0 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d  odule.xDestroy =
331c0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
331d0 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f  eMethods.xDestro
331e0 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
331f0 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79          xDestroy
33200 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33210 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
33220 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55  le.xOpen = new U
33230 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
33240 64 73 2e 78 4f 70 65 6e 28 78 4f 70 65 6e 29 3b  ds.xOpen(xOpen);
33250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33260 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
33270 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61  Close = new Unsa
33280 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
33290 78 43 6c 6f 73 65 28 78 43 6c 6f 73 65 29 3b 0d  xClose(xClose);.
332a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
332b0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
332c0 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e  xFilter = new Un
332d0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
332e0 73 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  s.xFilter(..    
332f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33300 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20  xFilter);....   
33310 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
33320 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20  iveModule.xNext 
33330 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
33340 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28  veMethods.xNext(
33350 78 4e 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20  xNext);..       
33360 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
33370 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77  odule.xEof = new
33380 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
33390 68 6f 64 73 2e 78 45 6f 66 28 78 45 6f 66 29 3b  hods.xEof(xEof);
333a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
333b0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
333c0 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55  .xColumn = new U
333d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
333e0 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20  ds.xColumn(..   
333f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33400 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20   xColumn);....  
33410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
33420 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
33430 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  d = new UnsafeNa
33440 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77  tiveMethods.xRow
33450 49 64 28 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20  Id(xRowId);.... 
33460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
33470 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64  ativeModule.xUpd
33480 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ate = new Unsafe
33490 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55  NativeMethods.xU
334a0 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
334b0 20 20 20 20 20 20 20 20 20 20 20 20 78 55 70 64              xUpd
334c0 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
334d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
334e0 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e  odule.xBegin = n
334f0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
33500 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 78 42  ethods.xBegin(xB
33510 65 67 69 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  egin);..        
33520 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
33530 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77  dule.xSync = new
33540 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
33550 68 6f 64 73 2e 78 53 79 6e 63 28 78 53 79 6e 63  hods.xSync(xSync
33560 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33570 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
33580 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77  le.xCommit = new
33590 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
335a0 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20  hods.xCommit(.. 
335b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
335c0 20 20 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a     xCommit);....
335d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
335e0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
335f0 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73  llback = new Uns
33600 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
33610 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  .xRollback(..   
33620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33630 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a   xRollback);....
33640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33650 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
33660 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77  ndFunction = new
33670 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
33680 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69  hods.xFindFuncti
33690 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
336a0 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75           xFindFu
336b0 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nction);....    
336c0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
336d0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
336e0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
336f0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61  iveMethods.xRena
33700 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
33710 20 20 20 20 20 20 20 20 20 78 52 65 6e 61 6d 65           xRename
33720 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33730 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
33740 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20  le.xSavepoint = 
33750 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
33760 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69  Methods.xSavepoi
33770 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
33780 20 20 20 20 20 20 20 20 20 78 53 61 76 65 70 6f           xSavepo
33790 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
337a0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
337b0 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d  odule.xRelease =
337c0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
337d0 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73  eMethods.xReleas
337e0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
337f0 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65          xRelease
33800 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33810 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
33820 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d  le.xRollbackTo =
33830 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
33840 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61  eMethods.xRollba
33850 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
33860 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c             xRoll
33870 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20  backTo);..      
33880 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33890 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 61         return na
338a0 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tiveModule;..   
338b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
338c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
338d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33900 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
33910 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
33920 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
33930 43 72 65 61 74 65 73 20 61 20 63 6f 70 79 20 6f  Creates a copy o
33940 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  f the specified.
33950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
33960 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
33970 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
33980 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f  te3_module" /> o
33990 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2c 0d  bject instance,.
339a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 69  .        /// usi
339b0 6e 67 20 64 65 66 61 75 6c 74 20 69 6d 70 6c 65  ng default imple
339c0 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 74  mentations for t
339d0 68 65 20 63 6f 6e 74 61 69 6e 65 64 20 64 65 6c  he contained del
339e0 65 67 61 74 65 73 20 77 68 65 6e 0d 0a 20 20 20  egates when..   
339f0 20 20 20 20 20 2f 2f 2f 20 6e 65 63 65 73 73 61       /// necessa
33a00 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
33a10 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
33a20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
33a30 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a  name="module">..
33a40 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
33a50 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
33a60 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
33a70 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f  qlite3_module" /
33a80 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20  > object..      
33a90 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 74    /// instance t
33aa0 6f 20 63 6f 70 79 2e 0d 0a 20 20 20 20 20 20 20  o copy...       
33ab0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
33ac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
33ad0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
33ae0 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63  / The new <see c
33af0 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76  ref="UnsafeNativ
33b00 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
33b10 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  _module" /> obje
33b20 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
33b30 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
33b40 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
33b50 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
33b60 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  te UnsafeNativeM
33b70 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
33b80 6f 64 75 6c 65 20 43 6f 70 79 4e 61 74 69 76 65  odule CopyNative
33b90 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  Module(..       
33ba0 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
33bb0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
33bc0 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a  _module module..
33bd0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
33be0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33bf0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
33c00 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
33c10 33 5f 6d 6f 64 75 6c 65 20 6e 65 77 4d 6f 64 75  3_module newModu
33c20 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  le =..          
33c30 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65        new Unsafe
33c40 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
33c50 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d  lite3_module();.
33c60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
33c70 65 77 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f  ewModule.iVersio
33c80 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69 56 65 72 73  n = module.iVers
33c90 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ion;....        
33ca0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43      newModule.xC
33cb0 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  reate = new Unsa
33cc0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
33cd0 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
33ce0 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
33cf0 65 2e 78 43 72 65 61 74 65 20 21 3d 20 6e 75 6c  e.xCreate != nul
33d00 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 72 65  l) ? module.xCre
33d10 61 74 65 20 3a 20 78 43 72 65 61 74 65 29 3b 0d  ate : xCreate);.
33d20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
33d30 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  ewModule.xConnec
33d40 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
33d50 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e  tiveMethods.xCon
33d60 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
33d70 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
33d80 43 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29  Connect != null)
33d90 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65   ? module.xConne
33da0 63 74 20 3a 20 78 43 6f 6e 6e 65 63 74 29 3b 0d  ct : xConnect);.
33db0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
33dc0 65 77 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  ewModule.xBestIn
33dd0 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  dex = new Unsafe
33de0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42  NativeMethods.xB
33df0 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20  estIndex(..     
33e00 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
33e10 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 21 3d  le.xBestIndex !=
33e20 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
33e30 78 42 65 73 74 49 6e 64 65 78 20 3a 20 78 42 65  xBestIndex : xBe
33e40 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  stIndex);....   
33e50 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
33e60 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d  le.xDisconnect =
33e70 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
33e80 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e  eMethods.xDiscon
33e90 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
33ea0 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
33eb0 44 69 73 63 6f 6e 6e 65 63 74 20 21 3d 20 6e 75  Disconnect != nu
33ec0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 44 69  ll) ? module.xDi
33ed0 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a 20 20 20 20  sconnect :..    
33ee0 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69 73              xDis
33ef0 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  connect);....   
33f00 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
33f10 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65  le.xDestroy = ne
33f20 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
33f30 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d  thods.xDestroy(.
33f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33f50 20 28 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f   (module.xDestro
33f60 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  y != null) ? mod
33f70 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3a 20 78  ule.xDestroy : x
33f80 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20  Destroy);....   
33f90 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
33fa0 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55  le.xOpen = new U
33fb0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
33fc0 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  ds.xOpen(..     
33fd0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
33fe0 6c 65 2e 78 4f 70 65 6e 20 21 3d 20 6e 75 6c 6c  le.xOpen != null
33ff0 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e  ) ? module.xOpen
34000 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20   : xOpen);....  
34010 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
34020 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77  ule.xClose = new
34030 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
34040 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d 0a 20 20  hods.xClose(..  
34050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
34060 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 21 3d 20  odule.xClose != 
34070 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
34080 43 6c 6f 73 65 20 3a 20 78 43 6c 6f 73 65 29 3b  Close : xClose);
34090 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
340a0 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  newModule.xFilte
340b0 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  r = new UnsafeNa
340c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c  tiveMethods.xFil
340d0 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
340e0 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 46        (module.xF
340f0 69 6c 74 65 72 20 21 3d 20 6e 75 6c 6c 29 20 3f  ilter != null) ?
34100 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20   module.xFilter 
34110 3a 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20  : xFilter);.... 
34120 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
34130 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77  dule.xNext = new
34140 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
34150 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20 20  hods.xNext(..   
34160 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
34170 64 75 6c 65 2e 78 4e 65 78 74 20 21 3d 20 6e 75  dule.xNext != nu
34180 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4e 65  ll) ? module.xNe
34190 78 74 20 3a 20 78 4e 65 78 74 29 3b 0d 0a 0d 0a  xt : xNext);....
341a0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
341b0 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77  odule.xEof = new
341c0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
341d0 68 6f 64 73 2e 78 45 6f 66 28 0d 0a 20 20 20 20  hods.xEof(..    
341e0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
341f0 75 6c 65 2e 78 45 6f 66 20 21 3d 20 6e 75 6c 6c  ule.xEof != null
34200 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 45 6f 66 20  ) ? module.xEof 
34210 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20  : xEof);....    
34220 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
34230 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20  e.xColumn = new 
34240 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
34250 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ods.xColumn(..  
34260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
34270 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 21 3d  odule.xColumn !=
34280 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
34290 78 43 6f 6c 75 6d 6e 20 3a 20 78 43 6f 6c 75 6d  xColumn : xColum
342a0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
342b0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f     newModule.xRo
342c0 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  wId = new Unsafe
342d0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
342e0 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20  owId(..         
342f0 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
34300 52 6f 77 49 64 20 21 3d 20 6e 75 6c 6c 29 20 3f  RowId != null) ?
34310 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3a   module.xRowId :
34320 20 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20   xRowId);....   
34330 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
34340 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77  le.xUpdate = new
34350 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
34360 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20  hods.xUpdate(.. 
34370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
34380 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 21  module.xUpdate !
34390 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
343a0 2e 78 55 70 64 61 74 65 20 3a 20 78 55 70 64 61  .xUpdate : xUpda
343b0 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
343c0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42      newModule.xB
343d0 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  egin = new Unsaf
343e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
343f0 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20  Begin(..        
34400 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
34410 78 42 65 67 69 6e 20 21 3d 20 6e 75 6c 6c 29 20  xBegin != null) 
34420 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20  ? module.xBegin 
34430 3a 20 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20  : xBegin);....  
34440 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
34450 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20  ule.xSync = new 
34460 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
34470 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20  ods.xSync(..    
34480 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
34490 75 6c 65 2e 78 53 79 6e 63 20 21 3d 20 6e 75 6c  ule.xSync != nul
344a0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 79 6e  l) ? module.xSyn
344b0 63 20 3a 20 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20  c : xSync);.... 
344c0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
344d0 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e  dule.xCommit = n
344e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
344f0 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d  ethods.xCommit(.
34500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34510 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74   (module.xCommit
34520 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
34530 6c 65 2e 78 43 6f 6d 6d 69 74 20 3a 20 78 43 6f  le.xCommit : xCo
34540 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mmit);....      
34550 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
34560 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20  xRollback = new 
34570 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
34580 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ods.xRollback(..
34590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
345a0 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  (module.xRollbac
345b0 6b 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  k != null) ? mod
345c0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3a 20  ule.xRollback : 
345d0 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20  xRollback);.... 
345e0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
345f0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
34600 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  on = new UnsafeN
34610 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
34620 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
34630 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
34640 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
34650 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  on != null) ? mo
34660 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
34670 6f 6e 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  on :..          
34680 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74        xFindFunct
34690 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ion);....       
346a0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
346b0 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73  Rename = new Uns
346c0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
346d0 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20  .xRename(..     
346e0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
346f0 6c 65 2e 78 52 65 6e 61 6d 65 20 21 3d 20 6e 75  le.xRename != nu
34700 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 65  ll) ? module.xRe
34710 6e 61 6d 65 20 3a 20 78 52 65 6e 61 6d 65 29 3b  name : xRename);
34720 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34730 6e 65 77 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  newModule.xSavep
34740 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  oint = new Unsaf
34750 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
34760 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
34770 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
34780 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 21  ule.xSavepoint !
34790 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
347a0 2e 78 53 61 76 65 70 6f 69 6e 74 20 3a 20 78 53  .xSavepoint : xS
347b0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
347c0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
347d0 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e  ule.xRelease = n
347e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
347f0 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28  ethods.xRelease(
34800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34810 20 20 28 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61    (module.xRelea
34820 73 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  se != null) ? mo
34830 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3a 20  dule.xRelease : 
34840 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20  xRelease);....  
34850 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
34860 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  ule.xRollbackTo 
34870 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
34880 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62  veMethods.xRollb
34890 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
348a0 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
348b0 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 21 3d 20 6e  xRollbackTo != n
348c0 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52  ull) ? module.xR
348d0 6f 6c 6c 62 61 63 6b 54 6f 20 3a 0d 0a 20 20 20  ollbackTo :..   
348e0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f               xRo
348f0 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 0d 0a 20 20  llbackTo);....  
34900 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
34910 20 6e 65 77 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20   newModule;..   
34920 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
34930 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34970 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34980 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
34990 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
349a0 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65  Calls one of the
349b0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
349c0 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6d 65  nitialization me
349d0 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20  thods...        
349e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
349f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
34a00 61 6d 20 6e 61 6d 65 3d 22 63 72 65 61 74 65 22  am name="create"
34a10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
34a20 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20  on-zero to call 
34a30 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
34a40 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
34a50 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 0d 0a  ule.Create" />..
34a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
34a70 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  od; otherwise, t
34a80 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
34a90 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
34aa0 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 0d 0a  le.Connect" />..
34ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
34ac0 6f 64 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65  od will be calle
34ad0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
34ae0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
34af0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
34b00 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20  e="pDb">..      
34b10 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
34b20 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
34b30 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20 20  tion handle...  
34b40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34b50 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
34b60 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75  <param name="pAu
34b70 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
34b80 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 61   The original na
34b90 74 69 76 65 20 70 6f 69 6e 74 65 72 20 76 61 6c  tive pointer val
34ba0 75 65 20 74 68 61 74 20 77 61 73 20 70 72 6f 76  ue that was prov
34bb0 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20  ided to the..   
34bc0 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
34bd0 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29  _create_module()
34be0 2c 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  , sqlite3_create
34bf0 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20 6f 72 0d  _module_v2() or.
34c00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
34c10 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
34c20 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 20  osable_module() 
34c30 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20  functions...    
34c40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
34c50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
34c60 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
34c70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
34c80 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
34c90 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20  uments from the 
34ca0 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
34cb0 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d  ABLE statement..
34cc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
34cd0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
34ce0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
34cf0 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
34d00 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
34d10 20 73 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74   string argument
34d20 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54  s from the CREAT
34d30 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 0d  E VIRTUAL TABLE.
34d40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61  .        /// sta
34d50 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
34d60 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34d70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
34d80 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
34d90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
34da0 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
34db0 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
34dc0 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f  e modified to po
34dd0 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77 6c 79  int to the newly
34de0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72  ..        /// cr
34df0 65 61 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c  eated native sql
34e00 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
34e10 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
34e20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34e30 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
34e40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72  <param name="pEr
34e50 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
34e60 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
34e70 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
34e80 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
34e90 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65   to point to the
34ea0 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
34eb0 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20 77 69 74  /// message, wit
34ec0 68 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  h the underlying
34ed0 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e 67 20 62   memory having b
34ee0 65 65 6e 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  een obtained fro
34ef0 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
34f00 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  // sqlite3_mallo
34f10 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  c() function... 
34f20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
34f30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
34f40 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
34f50 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
34f60 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
34f70 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
34f80 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
34f90 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34fa0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
34fb0 43 72 65 61 74 65 4f 72 43 6f 6e 6e 65 63 74 28  CreateOrConnect(
34fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
34fd0 6f 6c 20 63 72 65 61 74 65 2c 0d 0a 20 20 20 20  ol create,..    
34fe0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
34ff0 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
35000 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
35010 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
35020 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
35030 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
35040 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
35050 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
35060 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
35070 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
35080 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
35090 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
350a0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
350b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
350c0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
350d0 69 6c 65 4e 61 6d 65 20 3d 20 53 51 4c 69 74 65  ileName = SQLite
350e0 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f  String.StringFro
350f0 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20  mUtf8IntPtr(..  
35100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35110 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
35120 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 64 62  thods.sqlite3_db
35130 5f 66 69 6c 65 6e 61 6d 65 28 70 44 62 2c 20 49  _filename(pDb, I
35140 6e 74 50 74 72 2e 5a 65 72 6f 29 29 3b 0d 0a 0d  ntPtr.Zero));...
35150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35160 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f   using (SQLiteCo
35170 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
35180 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  ion = new SQLite
35190 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d 0a 20 20 20  Connection(..   
351a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
351b0 20 20 20 20 20 70 44 62 2c 20 66 69 6c 65 4e 61       pDb, fileNa
351c0 6d 65 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20  me, false))..   
351d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
351e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
351f0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
35200 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d 20 6e  lTable table = n
35210 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
35220 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
35230 20 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a   error = null;..
35240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35250 20 20 20 20 20 20 69 66 20 28 28 63 72 65 61 74        if ((creat
35260 65 20 26 26 20 43 72 65 61 74 65 28 63 6f 6e 6e  e && Create(conn
35270 65 63 74 69 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20  ection, pAux,.. 
35280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35290 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
352a0 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 41 72  eString.StringAr
352b0 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41  rayFromUtf8SizeA
352c0 6e 64 49 6e 74 50 74 72 28 61 72 67 63 2c 0d 0a  ndIntPtr(argc,..
352d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
352e0 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76              argv
352f0 29 2c 20 72 65 66 20 74 61 62 6c 65 2c 20 72 65  ), ref table, re
35300 66 20 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69  f error) == SQLi
35310 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 20  teErrorCode.Ok) 
35320 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
35330 20 20 20 20 20 20 20 20 20 20 20 20 28 21 63 72              (!cr
35340 65 61 74 65 20 26 26 20 43 6f 6e 6e 65 63 74 28  eate && Connect(
35350 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78  connection, pAux
35360 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
35370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
35380 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
35390 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53  ngArrayFromUtf8S
353a0 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72 67  izeAndIntPtr(arg
353b0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
353c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
353d0 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c 65  argv), ref table
353e0 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20  , ref error) == 
353f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
35400 4f 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  Ok))..          
35410 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35430 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20 21       if (table !
35440 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
35450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35480 70 56 74 61 62 20 3d 20 54 61 62 6c 65 54 6f 49  pVtab = TableToI
35490 6e 74 50 74 72 28 74 61 62 6c 65 29 3b 0d 0a 20  ntPtr(table);.. 
354a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
354b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
354c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
354d0 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  e.Ok;..         
354e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
354f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35500 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
35510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35520 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35540 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20         pError = 
35550 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
35560 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
35570 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
35580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35590 20 20 20 20 22 6e 6f 20 74 61 62 6c 65 20 77 61      "no table wa
355a0 73 20 63 72 65 61 74 65 64 22 29 3b 0d 0a 20 20  s created");..  
355b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
355c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
355d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
355e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
355f0 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
35600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
35610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35620 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72 20           pError 
35630 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55  = SQLiteString.U
35640 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
35650 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ing(error);..   
35660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35670 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
35680 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
35690 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
356a0 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
356b0 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d  on e) /* NOTE: M
356c0 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a  ust catch ALL. *
356d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
356e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
356f0 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74    pError = SQLit
35700 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50  eString.Utf8IntP
35710 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65 2e 54  trFromString(e.T
35720 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20  oString());..   
35730 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
35740 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
35750 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
35760 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
35770 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
35780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
357d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
357e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c          /// Call
357f0 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 69 72  s one of the vir
35800 74 75 61 6c 20 74 61 62 6c 65 20 66 69 6e 61 6c  tual table final
35810 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64 73 2e  ization methods.
35820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35830 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35840 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
35850 65 3d 22 64 65 73 74 72 6f 79 22 3e 0d 0a 20 20  e="destroy">..  
35860 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
35870 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 3c  ro to call the <
35880 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
35890 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 44  eManagedModule.D
358a0 65 73 74 72 6f 79 22 20 2f 3e 0d 0a 20 20 20 20  estroy" />..    
358b0 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20      /// method; 
358c0 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 0d 0a  otherwise, the..
358d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
358e0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
358f0 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 44 69 73 63  nagedModule.Disc
35900 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
35910 64 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  d will be..     
35920 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 2e 0d 0a     /// called...
35930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
35940 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
35950 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
35960 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
35970 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
35980 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
35990 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
359a0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
359b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
359c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
359d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
359e0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
359f0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
35a00 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
35a10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
35a20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35a30 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
35a40 44 65 73 74 72 6f 79 4f 72 44 69 73 63 6f 6e 6e  DestroyOrDisconn
35a50 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
35a60 20 20 62 6f 6f 6c 20 64 65 73 74 72 6f 79 2c 0d    bool destroy,.
35a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
35a80 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
35a90 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
35aa0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35ab0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
35ac0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35ad0 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
35ae0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d 20  alTable table = 
35af0 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72 28  TableFromIntPtr(
35b00 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
35b10 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
35b20 61 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  able != null).. 
35b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
35b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35b50 20 20 20 20 20 20 69 66 20 28 28 64 65 73 74 72        if ((destr
35b60 6f 79 20 26 26 20 28 44 65 73 74 72 6f 79 28 74  oy && (Destroy(t
35b70 61 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 45  able) == SQLiteE
35b80 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 20 7c 7c  rrorCode.Ok)) ||
35b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35ba0 20 20 20 20 20 20 20 20 20 20 28 21 64 65 73 74            (!dest
35bb0 72 6f 79 20 26 26 20 28 44 69 73 63 6f 6e 6e 65  roy && (Disconne
35bc0 63 74 28 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c  ct(table) == SQL
35bd0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
35be0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
35bf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35c10 20 20 20 69 66 20 28 74 61 62 6c 65 73 20 21 3d     if (tables !=
35c20 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
35c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35c40 20 20 20 20 74 61 62 6c 65 73 2e 52 65 6d 6f 76      tables.Remov
35c50 65 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  e(pVtab);....   
35c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35c70 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
35c80 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d  teErrorCode.Ok;.
35c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35ca0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
35cb0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35cc0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
35cd0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
35ce0 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54  eption e) /* NOT
35cf0 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c  E: Must catch AL
35d00 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  L. */..         
35d10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35d20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
35d30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
35d40 45 3a 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74  E: At this point
35d50 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 77 61  , there is no wa
35d60 79 20 74 6f 20 72 65 70 6f 72 74 20 74 68 65 20  y to report the 
35d70 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
35d80 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
35d90 63 6f 6e 64 69 74 69 6f 6e 20 62 61 63 6b 20 74  condition back t
35da0 6f 20 74 68 65 20 63 61 6c 6c 65 72 3b 20 74 68  o the caller; th
35db0 65 72 65 66 6f 72 65 2c 20 75 73 65 20 74 68 65  erefore, use the
35dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35dd0 20 20 2f 2f 20 20 20 20 20 20 20 6c 6f 67 67 69    //       loggi
35de0 6e 67 20 66 61 63 69 6c 69 74 79 20 69 6e 73 74  ng facility inst
35df0 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ead...          
35e00 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
35e10 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
35e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
35e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35e40 20 20 20 20 20 20 69 66 20 28 4c 6f 67 45 78 63        if (LogExc
35e50 65 70 74 69 6f 6e 73 4e 6f 54 68 72 6f 77 29 0d  eptionsNoThrow).
35e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35e70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35e90 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
35ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35eb0 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c       SQLiteLog.L
35ec0 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65  ogMessage(SQLite
35ed0 42 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50  Base.COR_E_EXCEP
35ee0 54 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20  TION,..         
35ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35f00 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
35f10 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
35f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35f30 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
35f40 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
35f50 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
35f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35f70 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
35f80 65 4d 65 74 68 6f 64 73 2e 45 78 63 65 70 74 69  eMethods.Excepti
35f90 6f 6e 4d 65 73 73 61 67 65 46 6f 72 6d 61 74 2c  onMessageFormat,
35fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
35fc0 73 74 72 6f 79 20 3f 20 22 78 44 65 73 74 72 6f  stroy ? "xDestro
35fd0 79 22 20 3a 20 22 78 44 69 73 63 6f 6e 6e 65 63  y" : "xDisconnec
35fe0 74 22 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20  t", e));..      
35ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
36000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36010 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36020 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
36030 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
36040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36050 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
36060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36070 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36080 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36090 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
360a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
360b0 20 20 20 20 20 20 20 20 46 72 65 65 54 61 62 6c          FreeTabl
360c0 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  e(pVtab);..     
360d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
360e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
360f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
36100 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rror;..        }
36110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
36120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36160 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
36170 72 65 67 69 6f 6e 20 53 74 61 74 69 63 20 45 72  region Static Er
36180 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20 48 65 6c  ror Handling Hel
36190 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
361a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
361b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
361c0 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65  Arranges for the
361d0 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
361e0 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70   message to be p
361f0 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a  laced into the..
36200 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72          /// zErr
36210 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73  Msg field of a s
36220 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
36230 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66  ved structure, f
36240 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  reeing the..    
36250 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67      /// existing
36260 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20   error message, 
36270 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
36280 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
36290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
362a0 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
362b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
362c0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
362d0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
362e0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
362f0 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  to be used...   
36300 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
36310 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
36320 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
36330 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
36340 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
36350 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
36360 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
36370 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
36380 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
36390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
363a0 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72  aram name="logEr
363b0 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  rors">..        
363c0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
363d0 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61  this error messa
363e0 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62  ge should also b
363f0 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74  e logged using t
36400 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
36410 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
36420 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d  eLog" /> class..
36430 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
36440 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
36450 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
36460 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d  logExceptions">.
36470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
36480 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74 20  -zero if caught 
36490 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c  exceptions shoul
364a0 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  d be logged usin
364b0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
364c0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
364d0 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
364e0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
364f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36500 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
36510 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
36520 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f      /// The erro
36530 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  r message...    
36540 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
36550 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
36560 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
36570 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
36580 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
36590 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
365a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
365b0 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
365c0 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d   SetTableError(.
365d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
365e0 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
365f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
36600 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
36610 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c            bool l
36620 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20  ogErrors,..     
36630 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
36640 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20  xceptions,..    
36650 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65          string e
36660 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
36670 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
36680 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
36690 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
366a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
366b0 69 66 20 28 6c 6f 67 45 72 72 6f 72 73 20 26 26  if (logErrors &&
366c0 20 28 65 72 72 6f 72 20 21 3d 20 6e 75 6c 6c 29   (error != null)
366d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
366e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
366f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36700 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53  Log.LogMessage(S
36710 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
36720 72 72 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  rror,..         
36730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
36740 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
36750 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
36760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36770 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
36780 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
36790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
367a0 20 20 20 20 20 20 20 20 20 22 56 69 72 74 75 61           "Virtua
367b0 6c 20 74 61 62 6c 65 20 65 72 72 6f 72 3a 20 7b  l table error: {
367c0 30 7d 22 2c 20 65 72 72 6f 72 29 29 3b 20 2f 2a  0}", error)); /*
367d0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
367e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
367f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
36800 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
36810 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
36830 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
36840 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
36850 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
36860 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73 65   success = false
36870 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ;..            I
36880 6e 74 50 74 72 20 70 4e 65 77 45 72 72 6f 72 20  ntPtr pNewError 
36890 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
368a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
368b0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
368c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
368d0 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49    if (pVtab == I
368e0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
368f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36900 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
36910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36920 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30    int offset = 0
36930 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36940 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
36950 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
36960 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
36970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
36980 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
36990 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29  ze, sizeof(int))
369a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
369b0 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
369c0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
369d0 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
369e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
369f0 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
36a00 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  t), IntPtr.Size)
36a10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36a20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 6c 64       IntPtr pOld
36a30 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 4d 61  Error = SQLiteMa
36a40 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
36a50 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 29 3b  (pVtab, offset);
36a60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36a70 20 20 20 20 69 66 20 28 70 4f 6c 64 45 72 72 6f      if (pOldErro
36a80 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
36a90 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
36aa0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36ab0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36ac0 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 6c 64  Memory.Free(pOld
36ad0 45 72 72 6f 72 29 3b 20 70 4f 6c 64 45 72 72 6f  Error); pOldErro
36ae0 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  r = IntPtr.Zero;
36af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36b00 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
36b10 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
36b20 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 70  pVtab, offset, p
36b30 4f 6c 64 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20  OldError);..    
36b40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
36b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36b60 20 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 6e 75   if (error == nu
36b70 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
36b80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
36b90 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
36ba0 20 20 20 20 20 20 20 20 20 70 4e 65 77 45 72 72           pNewErr
36bb0 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
36bc0 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
36bd0 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a  String(error);..
36be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36bf0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
36c00 69 74 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c  iteIntPtr(pVtab,
36c10 20 6f 66 66 73 65 74 2c 20 70 4e 65 77 45 72 72   offset, pNewErr
36c20 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
36c30 20 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20        success = 
36c40 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
36c50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
36c60 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
36c70 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d  on e) /* NOTE: M
36c80 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a  ust catch ALL. *
36c90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
36ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36cb0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
36cc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
36ce0 20 28 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 29   (logExceptions)
36cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36d00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65   SQLiteLog.LogMe
36d30 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73 65  ssage(SQLiteBase
36d40 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e  .COR_E_EXCEPTION
36d50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
36d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
36d70 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
36d80 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
36d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36da0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
36db0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
36dc0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
36dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36de0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
36df0 68 6f 64 73 2e 45 78 63 65 70 74 69 6f 6e 4d 65  hods.ExceptionMe
36e00 73 73 61 67 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ssageFormat,..  
36e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36e20 20 20 20 20 20 20 20 20 20 20 22 53 65 74 54 61            "SetTa
36e30 62 6c 65 45 72 72 6f 72 22 2c 20 65 29 29 3b 20  bleError", e)); 
36e40 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
36e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36e60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36e70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
36e80 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
36e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
36ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36eb0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
36ec0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
36ed0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36ee0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
36ef0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
36f00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
36f10 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
36f20 73 75 63 63 65 73 73 20 26 26 20 28 70 4e 65 77  success && (pNew
36f30 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  Error != IntPtr.
36f40 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20  Zero))..        
36f50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
36f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
36f70 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
36f80 28 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20 20  (pNewError);..  
36f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36fa0 20 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49 6e    pNewError = In
36fb0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
36fc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
36fd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
36fe0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
36ff0 72 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20 20 20  rn success;..   
37000 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
37010 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
37020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37050 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
37060 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
37070 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
37080 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65  Arranges for the
37090 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
370a0 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70   message to be p
370b0 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a  laced into the..
370c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72          /// zErr
370d0 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73  Msg field of a s
370e0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
370f0 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66  ved structure, f
37100 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  reeing the..    
37110 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67      /// existing
37120 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20   error message, 
37130 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
37140 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
37150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
37160 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
37170 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37180 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
37190 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
371a0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
371b0 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  to be used...   
371c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
371d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
371e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
371f0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
37200 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
37210 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
37220 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
37230 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a  stance used to..
37240 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b          /// look
37250 75 70 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  up the native po
37260 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
37270 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
37280 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
37290 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
372a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
372b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67  <param name="log
372c0 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20  Errors">..      
372d0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
372e0 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73  f this error mes
372f0 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f  sage should also
37300 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67   be logged using
37310 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
37320 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
37330 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73  iteLog" /> class
37340 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37350 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37360 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
37370 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22  ="logExceptions"
37380 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
37390 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68  on-zero if caugh
373a0 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f  t exceptions sho
373b0 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73  uld be logged us
373c0 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
373d0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
373e0 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c  SQLiteLog" /> cl
373f0 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
37400 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
37410 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
37420 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
37430 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72        /// The er
37440 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  ror message...  
37450 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37460 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
37470 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
37480 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
37490 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
374a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
374b0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
374c0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
374d0 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72  ol SetTableError
374e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
374f0 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
37500 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
37510 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
37520 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20  ble table,..    
37530 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67          bool log
37540 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
37550 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63       bool logExc
37560 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20  eptions,..      
37570 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
37580 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
37590 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
375a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61            if (ta
375b0 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ble == null)..  
375c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
375d0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
375e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
375f0 72 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65 2e  r pVtab = table.
37600 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d  NativeHandle;...
37610 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
37620 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72  (pVtab == IntPtr
37630 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
37640 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
37650 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
37660 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54       return SetT
37670 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
37680 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
37690 6c 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72  le, pVtab, logEr
376a0 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69  rors, logExcepti
376b0 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20  ons, error);..  
376c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
376d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
376e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
37720 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
37730 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
37740 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
37750 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
37760 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
37770 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
37780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
37790 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
377a0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
377b0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
377c0 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
377d0 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
377e0 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
377f0 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
37800 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
37810 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
37820 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
37830 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
37840 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
37850 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
37860 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
37870 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
37880 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37890 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
378a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
378b0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
378c0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
378d0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
378e0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
378f0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
37900 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
37910 20 75 73 65 64 20 74 6f 20 67 65 74 20 74 68 65   used to get the
37920 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
37930 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
37940 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
37950 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
37960 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
37970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
37980 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
37990 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d  me="logErrors">.
379a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
379b0 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72  -zero if this er
379c0 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75  ror message shou
379d0 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65  ld also be logge
379e0 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
379f0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
37a00 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f  ef="SQLiteLog" /
37a10 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  > class...      
37a20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
37a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
37a40 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65  am name="logExce
37a50 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20  ptions">..      
37a60 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
37a70 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69  f caught excepti
37a80 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ons should be lo
37a90 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a  gged using the..
37aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
37ab0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67   cref="SQLiteLog
37ac0 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
37ad0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
37ae0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
37af0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f  param name="erro
37b00 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
37b10 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61   The error messa
37b20 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
37b30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
37b40 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
37b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
37b60 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
37b70 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
37b80 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
37b90 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
37ba0 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72  atic bool SetCur
37bb0 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  sorError(..     
37bc0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
37bd0 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
37be0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
37bf0 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
37c00 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72        bool logEr
37c10 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
37c20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70     bool logExcep
37c30 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20  tions,..        
37c40 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72      string error
37c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
37c60 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
37c70 20 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72          if (pCur
37c80 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  sor == IntPtr.Ze
37c90 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
37ca0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
37cb0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
37cc0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20 3d    IntPtr pVtab =
37cd0 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72   TableFromCursor
37ce0 28 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72  (module, pCursor
37cf0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
37d00 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49    if (pVtab == I
37d10 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
37d20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
37d30 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
37d40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37d50 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d   SetTableError(.