System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 1532c848d3d555844cecff6f7b46b26becf9cd1b:


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 69 6e 74 20  vate static int 
1c0b0 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  bytesAllocated;.
1c0c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1c120 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1c130 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 78       /// The max
1c140 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6f  imum number of o
1c150 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1c160 79 20 62 79 74 65 73 20 65 76 65 72 20 61 6c 6c  y bytes ever all
1c170 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ocated by..     
1c180 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73     /// this clas
1c190 73 20 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69  s using the SQLi
1c1a0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
1c1b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c1c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1c1d0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1c1e0 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79 74 65   int maximumByte
1c1f0 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23 65 6e  sAllocated;..#en
1c200 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  dif..        #en
1c210 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1c220 20 20 20 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
1c270 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 65        #region Me
1c280 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20  mory Allocation 
1c290 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
1c2a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1c2b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c2c0 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74 20  // Allocates at 
1c2d0 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69 66  least the specif
1c2e0 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  ied number of by
1c2f0 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d 65  tes of native me
1c300 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
1c310 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74 65  / via the SQLite
1c320 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73 71   core library sq
1c330 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66  lite3_malloc() f
1c340 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74 75  unction and retu
1c350 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rns..        ///
1c360 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6e   the resulting n
1c370 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 20 20  ative pointer.  
1c380 49 66 20 74 68 65 20 54 52 41 43 4b 5f 4d 45 4d  If the TRACK_MEM
1c390 4f 52 59 5f 42 59 54 45 53 20 6f 70 74 69 6f 6e  ORY_BYTES option
1c3a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61  ..        /// wa
1c3b0 73 20 65 6e 61 62 6c 65 64 20 61 74 20 63 6f 6d  s enabled at com
1c3c0 70 69 6c 65 2d 74 69 6d 65 2c 20 61 64 6a 75 73  pile-time, adjus
1c3d0 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ts the number of
1c3e0 20 62 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79   bytes currently
1c3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ..        /// al
1c400 6c 6f 63 61 74 65 64 20 62 79 20 74 68 69 73 20  located by this 
1c410 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
1c420 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c430 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1c440 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d  am name="size">.
1c450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1c460 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
1c470 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a 20   to allocate... 
1c480 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1c490 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1c4a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1c4b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1c4c0 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20  ve pointer that 
1c4d0 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f 63  points to a bloc
1c4e0 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20 61  k of memory of a
1c4f0 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20 20 20  t least the..   
1c500 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
1c510 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73 65  ed size -OR- <se
1c520 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
1c530 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d  ero" /> if the m
1c540 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20 20  emory could..   
1c550 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65 20       /// not be 
1c560 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  allocated...    
1c570 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1c580 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
1c590 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
1c5a0 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73 69   Allocate(int si
1c5b0 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ze)..        {..
1c5c0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1c5d0 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e 73  tr pMemory = Uns
1c5e0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1c5f0 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  .sqlite3_malloc(
1c600 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54 52  size);....#if TR
1c610 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53  ACK_MEMORY_BYTES
1c620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1c630 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74   (pMemory != Int
1c640 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1c650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c660 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c            int bl
1c670 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70  ockSize = Size(p
1c680 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  Memory);....    
1c690 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c6a0 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a  blockSize > 0)..
1c6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c6d0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1c6e0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
1c6f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c710 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f         bytesAllo
1c720 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b 53 69  cated += blockSi
1c730 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ze;....         
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1c750 66 20 28 62 79 74 65 73 41 6c 6c 6f 63 61 74 65  f (bytesAllocate
1c760 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74 65 73  d > maximumBytes
1c770 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20 20 20  Allocated)..    
1c780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c790 20 20 20 20 20 20 20 20 6d 61 78 69 6d 75 6d 42          maximumB
1c7a0 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3d 20  ytesAllocated = 
1c7b0 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  bytesAllocated;.
1c7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c7d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c7e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c7f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1c800 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c810 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b 0d  return pMemory;.
1c820 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1c830 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1c890 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c8a0 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74  /// Allocates at
1c8b0 20 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69   least the speci
1c8c0 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62  fied number of b
1c8d0 79 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d  ytes of native m
1c8e0 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
1c8f0 2f 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74  // via the SQLit
1c900 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73  e core library s
1c910 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
1c920 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74  function and ret
1c930 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  urns..        //
1c940 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / the resulting 
1c950 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 77  native pointer w
1c960 69 74 68 6f 75 74 20 61 64 6a 75 73 74 69 6e 67  ithout adjusting
1c970 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d 0a   the number of..
1c980 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f          /// allo
1c990 63 61 74 65 64 20 62 79 74 65 73 20 63 75 72 72  cated bytes curr
1c9a0 65 6e 74 6c 79 20 74 72 61 63 6b 65 64 20 62 79  ently tracked by
1c9b0 20 74 68 69 73 20 63 6c 61 73 73 2e 20 20 54 68   this class.  Th
1c9c0 69 73 20 69 73 20 75 73 65 66 75 6c 0d 0a 20 20  is is useful..  
1c9d0 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 64        /// when d
1c9e0 65 61 6c 69 6e 67 20 77 69 74 68 20 62 6c 6f 63  ealing with bloc
1c9f0 6b 73 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61  ks of memory tha
1ca00 74 20 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20  t will be freed 
1ca10 64 69 72 65 63 74 6c 79 20 62 79 0d 0a 20 20 20  directly by..   
1ca20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
1ca30 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1ca40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ca50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1ca60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ca70 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20  me="size">..    
1ca80 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
1ca90 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 61  er of bytes to a
1caa0 6c 6c 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20 20  llocate...      
1cab0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1cac0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1cad0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1cae0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1caf0 69 6e 74 65 72 20 74 68 61 74 20 70 6f 69 6e 74  inter that point
1cb00 73 20 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20  s to a block of 
1cb10 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61  memory of at lea
1cb20 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  st the..        
1cb30 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 73 69  /// specified si
1cb40 7a 65 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65  ze -OR- <see cre
1cb50 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20  f="IntPtr.Zero" 
1cb60 2f 3e 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79  /> if the memory
1cb70 20 63 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20   could..        
1cb80 2f 2f 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63  /// not be alloc
1cb90 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
1cba0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1cbb0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1cbc0 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f  atic IntPtr Allo
1cbd0 63 61 74 65 55 6e 74 72 61 63 6b 65 64 28 69 6e  cateUntracked(in
1cbe0 74 20 73 69 7a 65 29 0d 0a 20 20 20 20 20 20 20  t size)..       
1cbf0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1cc00 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
1cc10 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1cc20 65 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b  e3_malloc(size);
1cc30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1cc40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1cc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cc90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1cca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ccb0 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65   /// Gets and re
1ccc0 74 75 72 6e 73 20 74 68 65 20 61 63 74 75 61 6c  turns the actual
1ccd0 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70 65   size of the spe
1cce0 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c  cified memory bl
1ccf0 6f 63 6b 20 74 68 61 74 0d 0a 20 20 20 20 20 20  ock that..      
1cd00 20 20 2f 2f 2f 20 77 61 73 20 70 72 65 76 69 6f    /// was previo
1cd10 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
1cd20 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  om the <see cref
1cd30 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d  ="Allocate" /> m
1cd40 65 74 68 6f 64 20 6f 72 0d 0a 20 20 20 20 20 20  ethod or..      
1cd50 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65    /// the SQLite
1cd60 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
1cd70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1cd80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1cd90 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1cda0 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20  "pMemory">..    
1cdb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1cdc0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1cdd0 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70  e memory block p
1cde0 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
1cdf0 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
1ce00 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1ce10 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e  ef="Allocate" />
1ce20 20 6d 65 74 68 6f 64 20 6f 72 20 74 68 65 20 53   method or the S
1ce30 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1ce40 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
1ce50 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1ce60 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1ce70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ce80 65 20 61 63 74 75 61 6c 20 73 69 7a 65 2c 20 69  e actual size, i
1ce90 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20  n bytes, of the 
1cea0 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65  memory block spe
1ceb0 63 69 66 69 65 64 20 76 69 61 20 74 68 65 0d 0a  cified via the..
1cec0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69          /// nati
1ced0 76 65 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20  ve pointer...   
1cee0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1cef0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1cf00 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 53  lic static int S
1cf10 69 7a 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f  ize(IntPtr pMemo
1cf20 72 79 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ry)..        {..
1cf30 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
1cf40 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
1cf50 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
1cf60 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1cf70 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65  ite3_malloc_size
1cf80 5f 69 6e 74 65 72 6f 70 28 70 4d 65 6d 6f 72 79  _interop(pMemory
1cf90 29 3b 0d 0a 23 65 6c 69 66 20 54 52 41 43 4b 5f  );..#elif TRACK_
1cfa0 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20  MEMORY_BYTES..  
1cfb0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1cfc0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43            // HAC
1cfd0 4b 3a 20 4f 6b 2c 20 77 65 20 63 61 6e 6e 6f 74  K: Ok, we cannot
1cfe0 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73   determine the s
1cff0 69 7a 65 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72  ize of the memor
1d000 79 20 62 6c 6f 63 6b 3b 0d 0a 20 20 20 20 20 20  y block;..      
1d010 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
1d020 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74 20 74  herefore, just t
1d030 72 61 63 6b 20 6e 75 6d 62 65 72 20 6f 66 20 61  rack number of a
1d040 6c 6c 6f 63 61 74 69 6f 6e 73 20 69 6e 73 74 65  llocations inste
1d050 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ad...           
1d060 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1d070 20 72 65 74 75 72 6e 20 28 70 4d 65 6d 6f 72 79   return (pMemory
1d080 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
1d090 20 3f 20 31 20 3a 20 30 3b 0d 0a 23 65 6c 73 65   ? 1 : 0;..#else
1d0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1d0b0 74 75 72 6e 20 30 3b 0d 0a 23 65 6e 64 69 66 0d  turn 0;..#endif.
1d0c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1d0d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1d120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1d130 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d140 2f 2f 2f 20 46 72 65 65 73 20 61 20 6d 65 6d 6f  /// Frees a memo
1d150 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75  ry block previou
1d160 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  sly obtained fro
1d170 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
1d180 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c  // <see cref="Al
1d190 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  locate" /> metho
1d1a0 64 2e 20 20 49 66 20 74 68 65 20 54 52 41 43 4b  d.  If the TRACK
1d1b0 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 20 6f 70  _MEMORY_BYTES op
1d1c0 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tion..        //
1d1d0 2f 20 77 61 73 20 65 6e 61 62 6c 65 64 20 61 74  / was enabled at
1d1e0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 61   compile-time, a
1d1f0 64 6a 75 73 74 73 20 74 68 65 20 6e 75 6d 62 65  djusts the numbe
1d200 72 20 6f 66 20 62 79 74 65 73 20 63 75 72 72 65  r of bytes curre
1d210 6e 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ntly..        //
1d220 2f 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74  / allocated by t
1d230 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
1d240 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d250 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1d260 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65  <param name="pMe
1d270 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20  mory">..        
1d280 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1d290 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65  ointer to the me
1d2a0 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69  mory block previ
1d2b0 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  ously obtained f
1d2c0 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
1d2d0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1d2e0 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74  Allocate" /> met
1d2f0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1d300 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d310 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1d320 63 20 76 6f 69 64 20 46 72 65 65 28 49 6e 74 50  c void Free(IntP
1d330 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20  tr pMemory)..   
1d340 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 52 41 43       {..#if TRAC
1d350 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a  K_MEMORY_BYTES..
1d360 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d370 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74  pMemory != IntPt
1d380 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1d390 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d3a0 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c 6f 63          int bloc
1d3b0 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65  kSize = Size(pMe
1d3c0 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mory);....      
1d3d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6c            if (bl
1d3e0 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20  ockSize > 0)..  
1d3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1d400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d410 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1d420 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1d430 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1d440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d450 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f 63 61       bytesAlloca
1d460 74 65 64 20 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65  ted -= blockSize
1d470 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d480 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1d490 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1d4a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1d4b0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
1d4c0 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
1d4d0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 72  thods.sqlite3_fr
1d4e0 65 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20  ee(pMemory);..  
1d4f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1d500 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d550 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1d560 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d570 20 46 72 65 65 73 20 61 20 6d 65 6d 6f 72 79 20   Frees a memory 
1d580 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79  block previously
1d590 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
1d5a0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a  he SQLite core..
1d5b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72          /// libr
1d5c0 61 72 79 20 77 69 74 68 6f 75 74 20 61 64 6a 75  ary without adju
1d5d0 73 74 69 6e 67 20 74 68 65 20 6e 75 6d 62 65 72  sting the number
1d5e0 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20 62 79   of allocated by
1d5f0 74 65 73 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20  tes currently.. 
1d600 20 20 20 20 20 20 20 2f 2f 2f 20 74 72 61 63 6b         /// track
1d610 65 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73  ed by this class
1d620 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75  .  This is usefu
1d630 6c 20 77 68 65 6e 20 64 65 61 6c 69 6e 67 20 77  l when dealing w
1d640 69 74 68 20 62 6c 6f 63 6b 73 20 6f 66 0d 0a 20  ith blocks of.. 
1d650 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72         /// memor
1d660 79 20 74 68 61 74 20 77 65 72 65 20 6e 6f 74 20  y that were not 
1d670 61 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e 67 20  allocated using 
1d680 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
1d690 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1d6a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d6b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d   <param name="pM
1d6c0 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20  emory">..       
1d6d0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1d6e0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d  pointer to the m
1d6f0 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76  emory block prev
1d700 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20  iously obtained 
1d710 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
1d720 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72    /// SQLite cor
1d730 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1d740 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1d750 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1d760 20 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 65   static void Fre
1d770 65 55 6e 74 72 61 63 6b 65 64 28 49 6e 74 50 74  eUntracked(IntPt
1d780 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20  r pMemory)..    
1d790 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d7a0 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1d7b0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66  ethods.sqlite3_f
1d7c0 72 65 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20  ree(pMemory);.. 
1d7d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1d7e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
1d7f0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1d800 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1d810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d850 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1d860 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 72 69  egion SQLiteStri
1d870 6e 67 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  ng Static Class.
1d880 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1d890 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
1d8a0 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20   class contains 
1d8b0 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74  static methods t
1d8c0 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20  hat are used to 
1d8d0 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65  deal with native
1d8e0 0d 0a 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20  ..    /// UTF-8 
1d8f0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20  string pointers 
1d900 74 6f 20 62 65 20 75 73 65 64 20 77 69 74 68 20  to be used with 
1d910 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
1d920 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
1d930 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1d940 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d950 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74  c class SQLiteSt
1d960 72 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ring..    {..   
1d970 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
1d980 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a  vate Constants..
1d990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1d9a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d9b0 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 6d  // This is the m
1d9c0 61 78 69 6d 75 6d 20 70 6f 73 73 69 62 6c 65 20  aximum possible 
1d9d0 6c 65 6e 67 74 68 20 66 6f 72 20 74 68 65 20 6e  length for the n
1d9e0 61 74 69 76 65 20 55 54 46 2d 38 20 65 6e 63 6f  ative UTF-8 enco
1d9f0 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ded..        ///
1da00 20 73 74 72 69 6e 67 73 20 75 73 65 64 20 77 69   strings used wi
1da10 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
1da20 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1da30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1da40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
1da50 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
1da60 54 68 69 72 74 79 42 69 74 73 20 3d 20 30 78 33  ThirtyBits = 0x3
1da70 66 66 66 66 66 66 66 3b 0d 0a 0d 0a 20 20 20 20  fffffff;....    
1da80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1da90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1daa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1dad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1dae0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1daf0 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 3c 73  / This is the <s
1db00 65 65 20 63 72 65 66 3d 22 45 6e 63 6f 64 69 6e  ee cref="Encodin
1db10 67 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  g" /> object ins
1db20 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 68 61  tance used to ha
1db30 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ndle..        //
1db40 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 66 72  / conversions fr
1db50 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e 0d 0a 20 20  om/to UTF-8...  
1db60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1db70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
1db80 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
1db90 64 6f 6e 6c 79 20 45 6e 63 6f 64 69 6e 67 20 55  donly Encoding U
1dba0 74 66 38 45 6e 63 6f 64 69 6e 67 20 3d 20 45 6e  tf8Encoding = En
1dbb0 63 6f 64 69 6e 67 2e 55 54 46 38 3b 0d 0a 20 20  coding.UTF8;..  
1dbc0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1dbd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1dbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
1dc30 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 45 6e 63  region UTF-8 Enc
1dc40 6f 64 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74  oding Helper Met
1dc50 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
1dc60 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1dc70 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1dc80 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1dc90 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69  managed string i
1dca0 6e 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e  nto the UTF-8 en
1dcb0 63 6f 64 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20  coding and..    
1dcc0 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20      /// returns 
1dcd0 74 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74  the array of byt
1dce0 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74  es containing it
1dcf0 73 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  s representation
1dd00 20 69 6e 20 74 68 61 74 0d 0a 20 20 20 20 20 20   in that..      
1dd10 20 20 2f 2f 2f 20 65 6e 63 6f 64 69 6e 67 2e 0d    /// encoding..
1dd20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1dd30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1dd40 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1dd50 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
1dd60 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
1dd70 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  ed string to con
1dd80 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
1dd90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1dda0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1ddb0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1ddc0 54 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74  The array of byt
1ddd0 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  es containing th
1dde0 65 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  e representation
1ddf0 20 6f 66 20 74 68 65 20 6d 61 6e 61 67 65 64 0d   of the managed.
1de00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
1de10 69 6e 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38  ing in the UTF-8
1de20 20 65 6e 63 6f 64 69 6e 67 20 6f 72 20 6e 75 6c   encoding or nul
1de30 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
1de40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1de50 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1de60 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
1de70 79 74 65 5b 5d 20 47 65 74 55 74 66 38 42 79 74  yte[] GetUtf8Byt
1de80 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20  esFromString(.. 
1de90 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1dea0 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  g value..       
1deb0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1dec0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1ded0 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
1dee0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1def0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
1df00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1df10 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69  eturn Utf8Encodi
1df20 6e 67 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75  ng.GetBytes(valu
1df30 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
1df40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1df50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df90 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1dfa0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1dfb0 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
1dfc0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 61   the specified a
1dfd0 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 72 65  rray of bytes re
1dfe0 70 72 65 73 65 6e 74 69 6e 67 20 61 20 73 74 72  presenting a str
1dff0 69 6e 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  ing in the..    
1e000 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 65 6e      /// UTF-8 en
1e010 63 6f 64 69 6e 67 20 61 6e 64 20 72 65 74 75 72  coding and retur
1e020 6e 73 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72  ns a managed str
1e030 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ing...        //
1e040 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1e050 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1e060 20 6e 61 6d 65 3d 22 62 79 74 65 73 22 3e 0d 0a   name="bytes">..
1e070 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1e080 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 74  array of bytes t
1e090 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
1e0a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1e0b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1e0c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1e0d0 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1e0e0 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20   string or null 
1e0f0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1e100 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1e110 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1e120 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
1e130 69 6e 67 20 47 65 74 53 74 72 69 6e 67 46 72 6f  ing GetStringFro
1e140 6d 55 74 66 38 42 79 74 65 73 28 0d 0a 20 20 20  mUtf8Bytes(..   
1e150 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20           byte[] 
1e160 62 79 74 65 73 0d 0a 20 20 20 20 20 20 20 20 20  bytes..         
1e170 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1e180 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1e190 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  (bytes == null).
1e1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e1b0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1e1c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e1d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1e1f0 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67  urn Utf8Encoding
1e200 2e 47 65 74 53 74 72 69 6e 67 28 62 79 74 65 73  .GetString(bytes
1e210 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
1e220 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 74         return Ut
1e230 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53 74  f8Encoding.GetSt
1e240 72 69 6e 67 28 62 79 74 65 73 2c 20 30 2c 20 62  ring(bytes, 0, b
1e250 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 23  ytes.Length);..#
1e260 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
1e270 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1e280 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
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 2f 2f 2f 2f  ////////////////
1e2d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1e2e0 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38     #region UTF-8
1e2f0 20 53 74 72 69 6e 67 20 48 65 6c 70 65 72 20 4d   String Helper M
1e300 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
1e310 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1e320 20 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 62 65         /// Probe
1e330 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  s a native point
1e340 65 72 20 74 6f 20 61 20 73 74 72 69 6e 67 20 69  er to a string i
1e350 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  n the UTF-8 enco
1e360 64 69 6e 67 20 66 6f 72 20 69 74 73 0d 0a 20 20  ding for its..  
1e370 20 20 20 20 20 20 2f 2f 2f 20 74 65 72 6d 69 6e        /// termin
1e380 61 74 69 6e 67 20 4e 55 4c 20 63 68 61 72 61 63  ating NUL charac
1e390 74 65 72 2c 20 77 69 74 68 69 6e 20 74 68 65 20  ter, within the 
1e3a0 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
1e3b0 20 6c 69 6d 69 74 2e 0d 0a 20 20 20 20 20 20 20   limit...       
1e3c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1e3d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e3e0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65  ram name="pValue
1e3f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1e400 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  The native NUL-t
1e410 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e 67  erminated string
1e420 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
1e430 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e450 72 61 6d 20 6e 61 6d 65 3d 22 6c 69 6d 69 74 22  ram name="limit"
1e460 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1e470 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74  he maximum lengt
1e480 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  h of the native 
1e490 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73  string, in bytes
1e4a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e4b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1e4c0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1e4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1e4e0 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61  length of the na
1e4f0 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20  tive string, in 
1e500 62 79 74 65 73 20 2d 4f 52 2d 20 7a 65 72 6f 20  bytes -OR- zero 
1e510 69 66 20 74 68 65 20 6c 65 6e 67 74 68 0d 0a 20  if the length.. 
1e520 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 75 6c 64         /// could
1e530 20 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e   not be determin
1e540 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1e550 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1e560 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1e570 69 63 20 69 6e 74 20 50 72 6f 62 65 46 6f 72 55  ic int ProbeForU
1e580 74 66 38 42 79 74 65 4c 65 6e 67 74 68 28 0d 0a  tf8ByteLength(..
1e590 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1e5a0 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20  tr pValue,..    
1e5b0 20 20 20 20 20 20 20 20 69 6e 74 20 6c 69 6d 69          int limi
1e5c0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
1e5d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1e5e0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
1e5f0 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  gth = 0;....    
1e600 20 20 20 20 20 20 20 20 69 66 20 28 28 70 56 61          if ((pVa
1e610 6c 75 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  lue != IntPtr.Ze
1e620 72 6f 29 20 26 26 20 28 6c 69 6d 69 74 20 3e 20  ro) && (limit > 
1e630 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0))..           
1e640 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e650 20 20 20 20 64 6f 0d 0a 20 20 20 20 20 20 20 20      do..        
1e660 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1e680 66 20 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42  f (Marshal.ReadB
1e690 79 74 65 28 70 56 61 6c 75 65 2c 20 6c 65 6e 67  yte(pValue, leng
1e6a0 74 68 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20  th) == 0)..     
1e6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6c0 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20     break;....   
1e6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6e0 20 69 66 20 28 6c 65 6e 67 74 68 20 3e 3d 20 6c   if (length >= l
1e6f0 69 6d 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20  imit)..         
1e700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1e710 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  reak;....       
1e720 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e               len
1e730 67 74 68 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  gth++;..        
1e740 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65 20          } while 
1e750 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  (true);..       
1e760 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1e770 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 65 6e        return len
1e780 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  gth;..        }.
1e790 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1e7f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e800 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1e810 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1e820 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1e830 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
1e840 6e 67 20 70 6f 69 6e 74 65 72 0d 0a 20 20 20 20  ng pointer..    
1e850 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6d      /// into a m
1e860 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a  anaged string...
1e870 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1e880 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e890 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1e8a0 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  "pValue">..     
1e8b0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1e8c0 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
1e8d0 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1e8e0 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  inter...        
1e8f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1e900 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1e910 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1e920 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72   The managed str
1e930 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e  ing or null upon
1e940 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
1e950 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1e960 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1e970 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
1e980 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e  StringFromUtf8In
1e990 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
1e9a0 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65     IntPtr pValue
1e9b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
1e9c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1e9d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
1e9e0 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74  tringFromUtf8Int
1e9f0 50 74 72 28 70 56 61 6c 75 65 2c 0d 0a 20 20 20  Ptr(pValue,..   
1ea00 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f               Pro
1ea10 62 65 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e  beForUtf8ByteLen
1ea20 67 74 68 28 70 56 61 6c 75 65 2c 20 54 68 69 72  gth(pValue, Thir
1ea30 74 79 42 69 74 73 29 29 3b 0d 0a 20 20 20 20 20  tyBits));..     
1ea40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1eaa0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1eab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1eac0 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
1ead0 66 69 65 64 20 6e 61 74 69 76 65 20 55 54 46 2d  fied native UTF-
1eae0 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
1eaf0 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
1eb00 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  d..        /// l
1eb10 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e  ength into a man
1eb20 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20  aged string...  
1eb30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1eb40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1eb50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1eb60 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
1eb70 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1eb80 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1eb90 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nter...        /
1eba0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ebb0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1ebc0 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a  name="length">..
1ebd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ebe0 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61  length of the na
1ebf0 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20  tive string, in 
1ec00 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  bytes...        
1ec10 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ec20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1ec30 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1ec40 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72   The managed str
1ec50 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e  ing or null upon
1ec60 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
1ec70 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1ec80 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1ec90 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
1eca0 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e  StringFromUtf8In
1ecb0 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
1ecc0 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65     IntPtr pValue
1ecd0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
1ece0 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20  nt length..     
1ecf0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1ed00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ed10 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49   if (pValue == I
1ed20 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1ed30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1ed40 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
1ed50 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e           if (len
1ed60 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
1ed70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ed80 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20           byte[] 
1ed90 62 79 74 65 73 20 3d 20 6e 65 77 20 62 79 74 65  bytes = new byte
1eda0 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20  [length];....   
1edb0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72               Mar
1edc0 73 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65  shal.Copy(pValue
1edd0 2c 20 62 79 74 65 73 2c 20 30 2c 20 6c 65 6e 67  , bytes, 0, leng
1ede0 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th);....        
1edf0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
1ee00 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  etStringFromUtf8
1ee10 42 79 74 65 73 28 62 79 74 65 73 29 3b 0d 0a 20  Bytes(bytes);.. 
1ee20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1ee30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ee40 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b  rn String.Empty;
1ee50 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ee60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ee70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1eeb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eec0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1eed0 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68   /// Converts th
1eee0 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61  e specified mana
1eef0 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20  ged string into 
1ef00 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  a native NUL-ter
1ef10 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20 20 20  minated..       
1ef20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e   /// UTF-8 strin
1ef30 67 20 70 6f 69 6e 74 65 72 20 75 73 69 6e 67 20  g pointer using 
1ef40 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20  memory obtained 
1ef50 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20  from the SQLite 
1ef60 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  core..        //
1ef70 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  / library...    
1ef80 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1ef90 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1efa0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
1efb0 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
1efc0 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
1efd0 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ring to convert.
1efe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1eff0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f000 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1f010 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1f020 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
1f030 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
1f040 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a 20 20  g pointer or..  
1f050 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1f060 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f  ref="IntPtr.Zero
1f070 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c 75 72  " /> upon failur
1f080 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1f090 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1f0a0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1f0b0 63 20 49 6e 74 50 74 72 20 55 74 66 38 49 6e 74  c IntPtr Utf8Int
1f0c0 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  PtrFromString(..
1f0d0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1f0e0 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
1f0f0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1f100 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f110 72 65 74 75 72 6e 20 55 74 66 38 49 6e 74 50 74  return Utf8IntPt
1f120 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75  rFromString(valu
1f130 65 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  e, true);..     
1f140 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1f150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f190 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1f1a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1f1b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1f1c0 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
1f1d0 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72  fied managed str
1f1e0 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74 69 76  ing into a nativ
1f1f0 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
1f200 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54  ..        /// UT
1f210 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1f220 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20  er using memory 
1f230 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
1f240 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
1f250 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61         /// libra
1f260 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
1f270 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f280 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f290 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
1f2a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1f2b0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f  anaged string to
1f2c0 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
1f2d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1f2e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1f2f0 72 61 6d 20 6e 61 6d 65 3d 22 74 72 61 63 6b 65  ram name="tracke
1f300 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  d">..        ///
1f310 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 6f 62 74   Non-zero to obt
1f320 61 69 6e 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20  ain memory from 
1f330 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
1f340 6c 69 62 72 61 72 79 20 77 69 74 68 6f 75 74 0d  library without.
1f350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 64 6a  .        /// adj
1f360 75 73 74 69 6e 67 20 74 68 65 20 6e 75 6d 62 65  usting the numbe
1f370 72 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20 62  r of allocated b
1f380 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79 20 62  ytes currently b
1f390 65 69 6e 67 20 74 72 61 63 6b 65 64 0d 0a 20 20  eing tracked..  
1f3a0 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65        /// by the
1f3b0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1f3c0 74 65 4d 65 6d 6f 72 79 22 20 2f 3e 20 63 6c 61  teMemory" /> cla
1f3d0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
1f3e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1f3f0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1f400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f410 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  e native NUL-ter
1f420 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1f430 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d  ring pointer or.
1f440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1f450 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
1f460 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69  ero" /> upon fai
1f470 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1f480 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1f490 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1f4a0 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38  atic IntPtr Utf8
1f4b0 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
1f4c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
1f4d0 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20  tring value,..  
1f4e0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
1f4f0 72 61 63 6b 65 64 0d 0a 20 20 20 20 20 20 20 20  racked..        
1f500 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
1f510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
1f520 74 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d  t length = 0;...
1f530 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1f540 75 72 6e 20 55 74 66 38 49 6e 74 50 74 72 46 72  urn Utf8IntPtrFr
1f550 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 2c 20  omString(value, 
1f560 74 72 61 63 6b 65 64 2c 20 72 65 66 20 6c 65 6e  tracked, ref len
1f570 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  gth);..        }
1f580 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1f590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1f5e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1f5f0 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
1f600 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
1f610 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
1f620 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55  into a native NU
1f630 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20  L-terminated..  
1f640 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20        /// UTF-8 
1f650 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75  string pointer u
1f660 73 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61  sing memory obta
1f670 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51  ined from the SQ
1f680 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20  Lite core..     
1f690 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d     /// library..
1f6a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1f6b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f6c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f6d0 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
1f6e0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
1f6f0 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  ed string to con
1f700 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
1f710 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f720 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f730 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a  name="length">..
1f740 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f750 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61  length of the na
1f760 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20  tive string, in 
1f770 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  bytes...        
1f780 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f790 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1f7a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1f7b0 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d   The native NUL-
1f7c0 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
1f7d0 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20   string pointer 
1f7e0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
1f7f0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
1f800 72 2e 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20  r.Zero" /> upon 
1f810 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1f820 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1f830 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f840 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 55   static IntPtr U
1f850 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
1f860 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ing(..          
1f870 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d    string value,.
1f880 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
1f890 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20   int length..   
1f8a0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1f8b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f8c0 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 49 6e     return Utf8In
1f8d0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76  tPtrFromString(v
1f8e0 61 6c 75 65 2c 20 74 72 75 65 2c 20 72 65 66 20  alue, true, ref 
1f8f0 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20  length);..      
1f900 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1f910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f950 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1f960 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1f970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1f980 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
1f990 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69  ied managed stri
1f9a0 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65  ng into a native
1f9b0 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d   NUL-terminated.
1f9c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46  .        /// UTF
1f9d0 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
1f9e0 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 6f  r using memory o
1f9f0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
1fa00 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20   SQLite core..  
1fa10 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
1fa20 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1fa30 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1fa40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1fa50 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
1fa60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1fa70 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20  naged string to 
1fa80 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
1fa90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1faa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1fab0 61 6d 20 6e 61 6d 65 3d 22 74 72 61 63 6b 65 64  am name="tracked
1fac0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1fad0 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 6f 62 74 61  Non-zero to obta
1fae0 69 6e 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 74  in memory from t
1faf0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1fb00 69 62 72 61 72 79 20 77 69 74 68 6f 75 74 0d 0a  ibrary without..
1fb10 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 64 6a 75          /// adju
1fb20 73 74 69 6e 67 20 74 68 65 20 6e 75 6d 62 65 72  sting the number
1fb30 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20 62 79   of allocated by
1fb40 74 65 73 20 63 75 72 72 65 6e 74 6c 79 20 62 65  tes currently be
1fb50 69 6e 67 20 74 72 61 63 6b 65 64 0d 0a 20 20 20  ing tracked..   
1fb60 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20       /// by the 
1fb70 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1fb80 65 4d 65 6d 6f 72 79 22 20 2f 3e 20 63 6c 61 73  eMemory" /> clas
1fb90 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1fba0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1fbb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1fbc0 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20  e="length">..   
1fbd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
1fbe0 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
1fbf0 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
1fc00 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
1fc10 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1fc20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1fc30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1fc40 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  e native NUL-ter
1fc50 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1fc60 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d  ring pointer or.
1fc70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1fc80 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
1fc90 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69  ero" /> upon fai
1fca0 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1fcb0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1fcc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1fcd0 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38  atic IntPtr Utf8
1fce0 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
1fcf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
1fd00 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20  tring value,..  
1fd10 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
1fd20 72 61 63 6b 65 64 2c 0d 0a 20 20 20 20 20 20 20  racked,..       
1fd30 20 20 20 20 20 72 65 66 20 69 6e 74 20 6c 65 6e       ref int len
1fd40 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gth..           
1fd50 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1fd60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
1fd70 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
1fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1fd90 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
1fda0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
1fdb0 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20    IntPtr result 
1fdc0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
1fdd0 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1fde0 5b 5d 20 62 79 74 65 73 20 3d 20 47 65 74 55 74  [] bytes = GetUt
1fdf0 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
1fe00 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g(value);....   
1fe10 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74           if (byt
1fe20 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
1fe30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1fe40 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
1fe50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1fe60 6c 65 6e 67 74 68 20 3d 20 62 79 74 65 73 2e 4c  length = bytes.L
1fe70 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  ength;....      
1fe80 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 65        if (tracke
1fe90 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
1fea0 20 20 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c      result = SQL
1feb0 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
1fec0 74 65 28 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d  te(length + 1);.
1fed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
1fee0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1fef0 20 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69     result = SQLi
1ff00 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
1ff10 65 55 6e 74 72 61 63 6b 65 64 28 6c 65 6e 67 74  eUntracked(lengt
1ff20 68 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20  h + 1);....     
1ff30 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c         if (resul
1ff40 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1ff50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1ff60 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
1ff70 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
1ff80 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f        Marshal.Co
1ff90 70 79 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73  py(bytes, 0, res
1ffa0 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20  ult, length);.. 
1ffb0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
1ffc0 61 6c 2e 57 72 69 74 65 42 79 74 65 28 72 65 73  al.WriteByte(res
1ffd0 75 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b  ult, length, 0);
1ffe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1fff0 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
20000 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20010 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
20020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20070 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
20080 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67  ion UTF-8 String
20090 20 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65   Array Helper Me
200a0 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
200b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
200c0 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
200d0 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72  ts a logical arr
200e0 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c  ay of native NUL
200f0 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
20100 38 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  8 string..      
20110 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69    /// pointers i
20120 6e 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20  nto an array of 
20130 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e  managed strings.
20140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20150 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20160 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20170 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
20180 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
20190 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e  r of elements in
201a0 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
201b0 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20  ay of native..  
201c0 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65        /// NUL-te
201d0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
201e0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d  tring pointers..
201f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20200 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20210 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20220 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
20230 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
20240 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f  ointer to the lo
20250 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e  gical array of n
20260 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
20270 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
20280 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  / UTF-8 string p
20290 6f 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65  ointers to conve
202a0 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
202b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
202c0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
202d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
202e0 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67  e array of manag
202f0 65 64 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75  ed strings or nu
20300 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
20310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20320 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20330 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
20340 73 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41  string[] StringA
20350 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65  rrayFromUtf8Size
20360 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  AndIntPtr(..    
20370 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
20380 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
20390 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20  ntPtr argv..    
203a0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
203b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
203c0 20 20 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d    if (argc < 0).
203d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
203e0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
203f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
20400 28 61 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e  (argv == IntPtr.
20410 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
20420 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
20430 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
20440 20 20 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75     string[] resu
20450 6c 74 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b  lt = new string[
20460 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  argc];....      
20470 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
20480 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74  ndex = 0, offset
20490 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
204a0 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
204b0 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   < result.Length
204c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
204d0 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20         index++, 
204e0 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72  offset += IntPtr
204f0 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20  .Size)..        
20500 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
20510 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
20520 72 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  rg = SQLiteMarsh
20530 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72  al.ReadIntPtr(ar
20540 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  gv, offset);....
20550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20560 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20  result[index] = 
20570 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e  (pArg != IntPtr.
20580 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20  Zero) ?..       
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
205a0 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
205b0 72 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d  r(pArg) : null;.
205c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
205d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
205e0 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
205f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
20600 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
20650 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
20660 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
20670 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72   Converts an arr
20680 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
20690 72 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72  rings into an ar
206a0 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20  ray of native.. 
206b0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74         /// NUL-t
206c0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
206d0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e  string pointers.
206e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
206f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20700 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20710 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
20720 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
20730 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
20740 72 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74  rings to convert
20750 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20760 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
20770 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
20780 3d 22 74 72 61 63 6b 65 64 22 3e 0d 0a 20 20 20  ="tracked">..   
20790 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
207a0 6f 20 74 6f 20 6f 62 74 61 69 6e 20 6d 65 6d 6f  o to obtain memo
207b0 72 79 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ry from the SQLi
207c0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
207d0 77 69 74 68 6f 75 74 0d 0a 20 20 20 20 20 20 20  without..       
207e0 20 2f 2f 2f 20 61 64 6a 75 73 74 69 6e 67 20 74   /// adjusting t
207f0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c  he number of all
20800 6f 63 61 74 65 64 20 62 79 74 65 73 20 63 75 72  ocated bytes cur
20810 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 74 72 61  rently being tra
20820 63 6b 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  cked..        //
20830 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72  / by the <see cr
20840 65 66 3d 22 53 51 4c 69 74 65 4d 65 6d 6f 72 79  ef="SQLiteMemory
20850 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
20860 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20870 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20880 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20890 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
208a0 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  of native NUL-te
208b0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
208c0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 6f  tring pointers o
208d0 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20  r null..        
208e0 2f 2f 2f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  /// upon failure
208f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20900 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
20910 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
20920 20 49 6e 74 50 74 72 5b 5d 20 55 74 66 38 49 6e   IntPtr[] Utf8In
20930 74 50 74 72 41 72 72 61 79 46 72 6f 6d 53 74 72  tPtrArrayFromStr
20940 69 6e 67 41 72 72 61 79 28 0d 0a 20 20 20 20 20  ingArray(..     
20950 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
20960 76 61 6c 75 65 73 2c 0d 0a 20 20 20 20 20 20 20  values,..       
20970 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 6b 65       bool tracke
20980 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  d..            )
20990 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
209a0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
209b0 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ues == null)..  
209c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
209d0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
209e0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
209f0 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20  [] result = new 
20a00 49 6e 74 50 74 72 5b 76 61 6c 75 65 73 2e 4c 65  IntPtr[values.Le
20a10 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth];....      
20a20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
20a30 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20  ndex = 0; index 
20a40 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b  < result.Length;
20a50 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
20a60 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
20a70 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74 66 38 49  t[index] = Utf8I
20a80 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
20a90 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d 2c 20 74  values[index], t
20aa0 72 61 63 6b 65 64 29 3b 0d 0a 0d 0a 20 20 20 20  racked);....    
20ab0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
20ac0 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
20ad0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
20ae0 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
20af0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
20b00 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20b50 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
20b60 51 4c 69 74 65 42 79 74 65 73 20 53 74 61 74 69  QLiteBytes Stati
20b70 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  c Class..    ///
20b80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
20b90 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63  /// This class c
20ba0 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d  ontains static m
20bb0 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65 20  ethods that are 
20bc0 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74  used to deal wit
20bd0 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f 2f  h native..    //
20be0 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6d 65  / pointers to me
20bf0 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68 61 74  mory blocks that
20c00 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e 74 61   logically conta
20c10 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62 79 74  in arrays of byt
20c20 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20 2f 2f  es to be..    //
20c30 2f 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20  / used with the 
20c40 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
20c50 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
20c60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
20c70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
20c80 61 73 73 20 53 51 4c 69 74 65 42 79 74 65 73 0d  ass SQLiteBytes.
20c90 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
20ca0 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41 72 72  #region Byte Arr
20cb0 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ay Helper Method
20cc0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
20cd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20ce0 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
20cf0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
20d00 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72  to a logical arr
20d10 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66 20 74  ay of bytes of t
20d20 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
20d30 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
20d40 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20   into a managed 
20d50 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20 20 20  byte array...   
20d60 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
20d70 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
20d80 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
20d90 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
20da0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
20db0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f  ointer to the lo
20dc0 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62  gical array of b
20dd0 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ytes to convert.
20de0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20df0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20e00 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20e10 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20  "length">..     
20e20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
20e30 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  h, in bytes, of 
20e40 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
20e50 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f  y of bytes to co
20e60 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
20e70 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20e80 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
20e90 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
20ea0 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74   The managed byt
20eb0 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20  e array or null 
20ec0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
20ed0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
20ee0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
20ef0 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74  ublic static byt
20f00 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d  e[] FromIntPtr(.
20f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
20f20 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20  Ptr pValue,..   
20f30 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
20f40 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gth..           
20f50 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
20f60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
20f70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e  Value == IntPtr.
20f80 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
20f90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
20fa0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
20fb0 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d     if (length ==
20fc0 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
20fd0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
20fe0 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  byte[0];....    
20ff0 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 72          byte[] r
21000 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79 74 65  esult = new byte
21010 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20  [length];....   
21020 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
21030 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 72 65  .Copy(pValue, re
21040 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74 68 29  sult, 0, length)
21050 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
21060 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
21070 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
21080 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
210d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
210e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
210f0 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6d  /// Converts a m
21100 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
21110 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20  y into a native 
21120 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67  pointer to a log
21130 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ical..        //
21140 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  / array of bytes
21150 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21160 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
21170 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21180 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
21190 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
211a0 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20  aged byte array 
211b0 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
211c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
211d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
211e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
211f0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
21200 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
21210 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61 79  gical byte array
21220 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
21230 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
21240 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
21250 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
21260 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49  tatic IntPtr ToI
21270 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
21280 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65      byte[] value
21290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
212a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
212b0 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
212c0 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  th = 0;....     
212d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f         return To
212e0 49 6e 74 50 74 72 28 76 61 6c 75 65 2c 20 72 65  IntPtr(value, re
212f0 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20  f length);..    
21300 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
21310 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21350 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
21360 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
21370 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
21380 6f 6e 76 65 72 74 73 20 61 20 6d 61 6e 61 67 65  onverts a manage
21390 64 20 62 79 74 65 20 61 72 72 61 79 20 69 6e 74  d byte array int
213a0 6f 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  o a native point
213b0 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d  er to a logical.
213c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72  .        /// arr
213d0 61 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20  ay of bytes...  
213e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
213f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21400 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
21410 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
21420 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
21430 62 79 74 65 20 61 72 72 61 79 20 74 6f 20 63 6f  byte array to co
21440 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
21450 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21460 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21470 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d   name="length">.
21480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21490 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79 74 65   length, in byte
214a0 73 2c 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72  s, of the conver
214b0 74 65 64 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  ted logical arra
214c0 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20  y of bytes...   
214d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
214e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
214f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
21500 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
21510 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
21520 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61 79  gical byte array
21530 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
21540 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
21550 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
21560 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
21570 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49  tatic IntPtr ToI
21580 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
21590 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65      byte[] value
215a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
215b0 65 66 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20  ef int length.. 
215c0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
215d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
215e0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
215f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
21600 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21610 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
21620 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67              leng
21630 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74  th = value.Lengt
21640 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
21650 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20    if (length == 
21660 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
21670 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
21680 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
21690 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65         IntPtr re
216a0 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d  sult = SQLiteMem
216b0 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e  ory.Allocate(len
216c0 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
216d0 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
216e0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
216f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21700 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
21710 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
21720 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
21730 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c  (value, 0, resul
21740 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20  t, length);.... 
21750 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
21760 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
21770 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
21780 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
21790 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
217a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
217b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217f0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
21800 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 20  n SQLiteMarshal 
21810 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20  Static Class..  
21820 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21830 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
21840 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61  ass contains sta
21850 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74  tic methods that
21860 20 61 72 65 20 75 73 65 64 20 74 6f 20 70 65 72   are used to per
21870 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20  form several..  
21880 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20    /// low-level 
21890 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67  data marshalling
218a0 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20 6e   tasks between n
218b0 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67 65  ative and manage
218c0 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
218d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
218e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
218f0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61 72   class SQLiteMar
21900 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  shal..    {..   
21910 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
21920 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  Ptr Helper Metho
21930 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
21940 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21950 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61     /// Returns a
21960 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
21970 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
21980 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64  t instance based
21990 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   on the..       
219a0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
219b0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
219c0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
219d0 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74 65  ance and an inte
219e0 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ger..        ///
219f0 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20 20   offset...      
21a00 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
21a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21a20 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
21a30 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
21a40 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
21a50 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
21a60 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
21a70 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
21a80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
21a90 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
21aa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21ab0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21ac0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21ad0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
21ae0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
21af0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
21b00 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
21b10 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  cation that the 
21b20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  new..        ///
21b30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
21b40 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
21b50 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f  stance should po
21b60 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20  int to...       
21b70 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
21b90 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
21ba0 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63  / The new <see c
21bb0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
21bc0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
21bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21be0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
21bf0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
21c00 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f 72  IntPtr IntPtrFor
21c10 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
21c20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
21c30 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
21c40 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20    int offset..  
21c50 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
21c60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
21c70 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 49      return new I
21c80 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f  ntPtr(pointer.To
21c90 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74  Int64() + offset
21ca0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
21cb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
21cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
21d10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21d20 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70     /// Rounds up
21d30 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a 65   an integer size
21d40 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c   to the next mul
21d50 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69  tiple of the ali
21d60 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  gnment...       
21d70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21d90 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
21da0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21db0 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73  e size, in bytes
21dc0 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64 20  , to be rounded 
21dd0 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  up...        ///
21de0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
21df0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21e00 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d  me="alignment">.
21e10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21e20 20 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e 6d   required alignm
21e30 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74 75  ent for the retu
21e40 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  rn value...     
21e50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
21e70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
21e80 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e  /// The size, in
21e90 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64 20   bytes, rounded 
21ea0 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d  up to the next m
21eb0 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a  ultiple of the..
21ec0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67          /// alig
21ed0 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61 6c  nment.  This val
21ee0 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62 65  ue may end up be
21ef0 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73 20  ing the same as 
21f00 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20  the original..  
21f10 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d        /// size..
21f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
21f30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21f40 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
21f50 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20  nt RoundUp(..   
21f60 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
21f70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
21f80 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20  int alignment.. 
21f90 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
21fa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21fb0 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65       int alignme
21fc0 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69  ntMinusOne = ali
21fd0 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20  gnment - 1;..   
21fe0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21ff0 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65  ((size + alignme
22000 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61  ntMinusOne) & ~a
22010 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65  lignmentMinusOne
22020 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
22030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
22040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
22090 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
220a0 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
220b0 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69 6e  s the offset, in
220c0 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e   bytes, of the n
220d0 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ext structure me
220e0 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
220f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
22100 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
22110 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
22120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
22130 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74  e offset, in byt
22140 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65  es, of the curre
22150 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  nt structure mem
22160 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
22170 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
22180 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
22190 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20  ame="size">..   
221a0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
221b0 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  e, in bytes, of 
221c0 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75  the current stru
221d0 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
221e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
221f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
22200 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c   <param name="al
22210 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20  ignment">..     
22220 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e     /// The align
22230 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c 20  ment, in bytes, 
22240 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75  of the next stru
22250 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
22260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
22270 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
22280 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
22290 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73      /// The offs
222a0 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  et, in bytes, of
222b0 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74   the next struct
222c0 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
222d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
222e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
222f0 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4e  lic static int N
22300 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
22310 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
22320 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
22330 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20     int size,..  
22340 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c            int al
22350 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ignment..       
22360 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
22370 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
22380 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66  eturn RoundUp(of
22390 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69  fset + size, ali
223a0 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  gnment);..      
223b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
223c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
223d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
223e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
223f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
22420 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61        #region Ma
22430 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70 65  rshal Read Helpe
22440 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
22450 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
22460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
22470 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ads a <see cref=
22480 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
22490 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
224a0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
224b0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
224c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
224d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
224e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
224f0 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
22500 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22510 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
22520 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22530 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
22540 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
22550 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
22560 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
22570 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22580 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
22590 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
225a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
225b0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
225c0 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
225d0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
225e0 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
225f0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
22600 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
22610 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20  e to be read is 
22620 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
22630 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22640 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
22650 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
22660 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
22670 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
22680 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
22690 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
226a0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
226b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
226c0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
226d0 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33 32  ic int ReadInt32
226e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
226f0 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
22700 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
22710 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
22720 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
22730 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22740 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
22760 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
22770 64 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20  dInt32(pointer, 
22780 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d  offset);..#else.
22790 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
227a0 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
227b0 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f  Int32(IntPtrForO
227c0 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
227d0 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66  ffset));..#endif
227e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
227f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22850 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22860 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65   /// Reads a <se
22870 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
22880 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
22890 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
228a0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
228b0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
228c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
228d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
228e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
228f0 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
22900 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
22910 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
22920 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
22930 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
22940 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
22950 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
22960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
22970 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
22980 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22990 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
229a0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
229b0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
229c0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
229d0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
229e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
229f0 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
22a00 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  /> value to be r
22a10 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ead is located..
22a20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
22a30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
22a40 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
22a50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
22a60 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
22a70 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20  /> value at the 
22a80 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
22a90 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
22aa0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
22ab0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
22ac0 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 52  ic static long R
22ad0 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20  eadInt64(..     
22ae0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
22af0 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
22b00 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
22b10 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
22b20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
22b30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22b40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
22b50 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
22b60 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 70  shal.ReadInt64(p
22b70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b  ointer, offset);
22b80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
22b90 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
22ba0 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e  hal.ReadInt64(In
22bb0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
22bc0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b  inter, offset));
22bd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
22be0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
22bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
22c40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
22c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
22c60 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ds a <see cref="
22c70 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
22c80 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
22c90 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
22ca0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
22cb0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22cc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22cd0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
22ce0 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
22cf0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22d00 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
22d10 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22d20 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
22d30 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
22d40 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
22d50 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
22d60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22d70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
22d80 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
22d90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22da0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
22db0 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
22dc0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
22dd0 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
22de0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
22df0 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20  ="Double" /> to 
22e00 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74  be read is locat
22e10 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
22e20 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
22e30 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
22e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
22e50 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  e <see cref="Dou
22e60 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 74  ble" /> value at
22e70 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
22e80 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
22e90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
22ea0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22eb0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 64   public static d
22ec0 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62 6c 65  ouble ReadDouble
22ed0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
22ee0 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
22ef0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
22f00 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
22f10 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
22f20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22f30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
22f50 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65  turn BitConverte
22f60 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44 6f 75  r.Int64BitsToDou
22f70 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65 61 64  ble(Marshal.Read
22f80 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
22f90 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72 2c          pointer,
22fa0 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73   offset));..#els
22fb0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
22fc0 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74  eturn BitConvert
22fd0 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74 43  er.ToDouble(BitC
22fe0 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
22ff0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
23000 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65 61 64      Marshal.Read
23010 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
23020 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
23030 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23  ffset))), 0);..#
23040 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
23050 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
23060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
230b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
230c0 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
230d0 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  an <see cref="In
230e0 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 66  tPtr" /> value f
230f0 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
23100 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
23110 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
23120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
23130 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23140 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23150 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
23160 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
23170 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
23180 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
23190 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
231a0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
231b0 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
231c0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
231d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
231e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
231f0 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
23200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23210 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
23220 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
23230 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
23240 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
23250 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
23260 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
23270 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
23280 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
23290 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
232a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
232b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
232c0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
232d0 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75  "IntPtr" /> valu
232e0 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
232f0 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
23300 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
23310 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
23320 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
23330 69 63 20 49 6e 74 50 74 72 20 52 65 61 64 49 6e  ic IntPtr ReadIn
23340 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
23350 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
23360 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
23370 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
23380 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
23390 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
233a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
233b0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
233c0 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
233d0 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f 69 6e  .ReadIntPtr(poin
233e0 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23  ter, offset);..#
233f0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
23400 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
23410 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e 74 50  .ReadIntPtr(IntP
23420 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
23430 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  ter, offset));..
23440 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
23450 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
23460 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
23470 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
234c0 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73      #region Mars
234d0 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70 65 72  hal Write Helper
234e0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
234f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
23500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
23510 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  tes an <see cref
23520 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
23530 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
23540 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
23550 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
23560 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
23570 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23580 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23590 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
235a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
235b0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
235c0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
235d0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
235e0 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
235f0 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
23600 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
23610 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23620 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23630 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
23640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
23650 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
23660 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
23670 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
23680 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
23690 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
236a0 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
236b0 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
236c0 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
236d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
236e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
236f0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
23700 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
23710 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
23720 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
23730 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
23740 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
23750 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
23760 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
23770 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
23780 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
23790 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
237a0 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20   int offset,..  
237b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76 61            int va
237c0 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
237d0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
237e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
237f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23800 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
23810 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 6f  al.WriteInt32(po
23820 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76  inter, offset, v
23830 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
23840 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
23850 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49 6e  al.WriteInt32(In
23860 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
23870 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20  inter, offset), 
23880 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
23890 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
238a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
238b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
238f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
23900 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
23910 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c 73  /// Writes an <s
23920 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
23930 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
23940 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
23950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
23960 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
23970 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
23980 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
23990 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
239a0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
239b0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
239c0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
239d0 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
239e0 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
239f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
23a00 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
23a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23a20 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
23a30 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
23a40 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
23a50 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
23a60 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
23a70 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
23a80 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
23a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
23aa0 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
23ab0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
23ac0 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
23ad0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23ae0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23af0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23b00 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
23b10 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
23b20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
23b30 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
23b40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
23b50 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
23b60 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
23b70 64 20 57 72 69 74 65 49 6e 74 36 34 28 0d 0a 20  d WriteInt64(.. 
23b80 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
23b90 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
23ba0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
23bb0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
23bc0 20 6c 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20   long value..   
23bd0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
23be0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
23bf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23c00 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
23c10 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
23c20 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f  Int64(pointer, o
23c30 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a  ffset, value);..
23c40 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
23c50 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
23c60 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
23c70 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
23c80 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d  ffset), value);.
23c90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
23ca0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
23cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cf0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
23d00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
23d10 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
23d20 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  es a <see cref="
23d30 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
23d40 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
23d50 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
23d60 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
23d70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
23d80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23d90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23da0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
23db0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
23dc0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
23dd0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
23de0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
23df0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
23e00 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
23e10 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
23e20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23e30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
23e40 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
23e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23e60 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
23e70 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
23e80 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
23e90 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
23ea0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
23eb0 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
23ec0 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
23ed0 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
23ee0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
23ef0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
23f00 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
23f10 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
23f20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
23f30 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20  ouble" /> value 
23f40 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
23f50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23f60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
23f70 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
23f80 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20  eDouble(..      
23f90 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
23fa0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
23fb0 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
23fc0 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62              doub
23fd0 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  le value..      
23fe0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
23ff0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
24000 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24010 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
24020 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
24030 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  64(pointer, offs
24040 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
24050 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65       BitConverte
24060 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34 42  r.DoubleToInt64B
24070 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23 65  its(value));..#e
24080 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
24090 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
240a0 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
240b0 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
240c0 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  set),..         
240d0 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72         BitConver
240e0 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74 43  ter.ToInt64(BitC
240f0 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
24100 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d 0a  s(value), 0));..
24110 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
24120 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
24130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24170 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24180 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
24190 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
241a0 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49  s a <see cref="I
241b0 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
241c0 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
241d0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
241e0 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
241f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
24200 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24210 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
24220 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
24230 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
24240 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
24250 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
24260 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
24270 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
24280 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
24290 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
242a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
242b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
242c0 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
242d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
242e0 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
242f0 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
24300 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
24310 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
24320 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
24330 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
24340 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73  to be written is
24350 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
24360 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
24380 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
24390 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
243a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
243b0 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74  tPtr" /> value t
243c0 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
243d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
243e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
243f0 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
24400 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
24410 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
24420 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
24430 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
24440 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
24450 72 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  r value..       
24460 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
24470 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
24480 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24490 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  K..            M
244a0 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
244b0 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  tr(pointer, offs
244c0 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  et, value);..#el
244d0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
244e0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
244f0 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr(IntPtrForOff
24500 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
24510 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  set), value);..#
24520 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
24530 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
24540 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
24550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24590 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
245a0 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63     #region Objec
245b0 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  t Helper Methods
245c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
245d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
245e0 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20 61   /// Generates a
245f0 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75 65   hash code value
24600 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 2e   for the object.
24610 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
24620 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24630 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
24640 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
24650 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
24660 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
24670 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74 68   to calculate th
24680 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20  e hash code...  
24690 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
246a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
246b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65  <param name="ide
246c0 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20 20  ntity">..       
246d0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
246e0 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65 63   different objec
246f0 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74 68  t instances with
24700 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20   the same value 
24710 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20  should..        
24720 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69 66  /// generate dif
24730 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64 65  ferent hash code
24740 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63 61  s, where applica
24750 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ble.  This param
24760 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eter..        //
24770 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  / has no effect 
24780 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
24790 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a  act Framework...
247a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
247b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
247c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
247d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61 73       /// The has
247e0 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52  h code value -OR
247f0 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f 62  - zero if the ob
24800 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20  ject is null... 
24810 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
24820 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
24830 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
24840 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20   GetHashCode(.. 
24850 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
24860 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  t value,..      
24870 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74        bool ident
24880 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
24890 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
248a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
248b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
248c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
248d0 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20 20  dentity)..      
248e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
248f0 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e   RuntimeHelpers.
24900 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c 75  GetHashCode(valu
24910 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
24920 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
24930 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65  alue == null) re
24940 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
24950 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
24960 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b  e.GetHashCode();
24970 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
24980 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
24990 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
249a0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
249b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
249f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24a00 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d   #region SQLiteM
24a10 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73 73  odule Base Class
24a20 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
24a30 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
24a40 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
24a50 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72  ts a managed vir
24a60 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
24a70 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
24a80 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73  ...    /// It is
24a90 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20   not sealed and 
24aa0 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73 20  must be used as 
24ab0 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
24ac0 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20  or any..    /// 
24ad0 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72  user-defined vir
24ae0 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
24af0 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d  e classes implem
24b00 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64  ented in managed
24b10 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
24b20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
24b30 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
24b40 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75  class SQLiteModu
24b50 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  le :..          
24b60 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64    ISQLiteManaged
24b70 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74  Module, /*ISQLit
24b80 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f  eNativeModule,*/
24b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 44  ..            ID
24ba0 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54  isposable /* NOT
24bb0 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20   SEALED */..    
24bc0 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
24bd0 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  on SQLiteNativeM
24be0 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43 6c  odule Private Cl
24bf0 61 73 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ass..        ///
24c00 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24c10 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
24c20 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  ss implements th
24c30 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24c40 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24c50 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
24c60 2f 20 69 6e 74 65 72 66 61 63 65 20 62 79 20 66  / interface by f
24c70 6f 72 77 61 72 64 69 6e 67 20 74 68 6f 73 65 20  orwarding those 
24c80 6d 65 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f 20  method calls to 
24c90 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
24ca0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
24cb0 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
24cc0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 74 20  ect instance it 
24cd0 63 6f 6e 74 61 69 6e 73 2e 20 20 49 66 20 74 68  contains.  If th
24ce0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
24cf0 6f 6e 74 61 69 6e 65 64 20 3c 73 65 65 20 63 72  ontained <see cr
24d00 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
24d10 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
24d20 61 6e 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61 6c  ance is null, al
24d30 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
24d40 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
24d50 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
24d60 65 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73 69  e" /> methods si
24d70 6d 70 6c 79 20 67 65 6e 65 72 61 74 65 20 61 6e  mply generate an
24d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 72  ..        /// er
24d90 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ror...        //
24da0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
24db0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
24dc0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
24dd0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a 0d  eNativeModule :.
24de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24df0 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
24e00 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c  dule, IDisposabl
24e10 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
24e20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
24e30 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
24e40 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
24e50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
24e60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24e70 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c 75  This is the valu
24e80 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79 73  e that is always
24e90 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22 6c   used for the "l
24ea0 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20 20 20  ogErrors"..     
24eb0 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
24ec0 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
24ed0 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
24ee0 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
24ef0 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
24f00 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
24f10 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
24f20 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
24f30 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
24f40 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24f50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
24f60 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
24f70 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f  l DefaultLogErro
24f80 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  rs = true;....  
24f90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
24fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24ff0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25000 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
25010 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74 68   is the value th
25020 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  at is always use
25030 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45 78  d for the "logEx
25040 63 65 70 74 69 6f 6e 73 22 0d 0a 20 20 20 20 20  ceptions"..     
25050 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
25060 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
25070 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
25080 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
25090 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
250a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
250b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
250c0 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
250d0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
250e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
250f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
25100 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
25110 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65  l DefaultLogExce
25120 70 74 69 6f 6e 73 20 3d 20 74 72 75 65 3b 0d 0a  ptions = true;..
25130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25180 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
25190 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
251a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
251b0 54 68 69 73 20 69 73 20 74 68 65 20 65 72 72 6f  This is the erro
251c0 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20 75  r message text u
251d0 73 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6e  sed when the con
251e0 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 20  tained..        
251f0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
25200 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
25210 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
25220 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  nce is not avail
25230 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
25240 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65    /// for any re
25250 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  ason...         
25260 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25270 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
25280 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
25290 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ing ModuleNotAva
252a0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
252b0 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ge =..          
252c0 20 20 20 20 20 20 22 6e 61 74 69 76 65 20 6d 6f        "native mo
252d0 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
252e0 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  ion not availabl
252f0 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e";..           
25300 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
25310 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
25320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
25370 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
25380 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
25390 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
253a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
253b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
253c0 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
253d0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
253e0 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a  sed to provide..
253f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25400 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  an implementatio
25410 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72  n of the <see cr
25420 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25430 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
25440 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74           /// int
25450 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20  erface...       
25460 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
25470 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
25480 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 4d   private SQLiteM
25490 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20  odule module;.. 
254a0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
254b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
254c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
254d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25500 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
25510 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
25520 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
25530 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
25540 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
25550 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25560 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
25570 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
25580 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
25590 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
255a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
255b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
255c0 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20  module">..      
255d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
255e0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
255f0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
25600 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
25610 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20  o provide..     
25620 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d         /// an im
25630 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
25640 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25650 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25660 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
25670 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63      /// interfac
25680 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
25690 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
256a0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
256b0 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
256c0 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
256d0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
256e0 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le module..     
256f0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
25700 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25710 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
25720 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c  s.module = modul
25730 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
25740 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
25750 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
25760 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
25770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
257b0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
257c0 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74  ion Private Stat
257d0 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
257e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
257f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25800 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
25810 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73  table error mess
25820 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20  age to one that 
25830 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e 61  indicates the na
25840 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
25850 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70    /// module imp
25860 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e  lementation is n
25870 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
25880 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25890 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
258a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
258b0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
258c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
258d0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
258e0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
258f0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
25900 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
25910 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25920 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
25930 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
25940 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25950 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73   The value of <s
25960 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45  ee cref="SQLiteE
25970 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20  rrorCode.Error" 
25980 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  />...           
25990 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
259a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
259b0 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69  vate static SQLi
259c0 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75  teErrorCode Modu
259d0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
259e0 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
259f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
25a00 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
25a10 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
25a20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25a30 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
25a40 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70  bleError(null, p
25a50 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67  Vtab, DefaultLog
25a60 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
25a70 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66               Def
25a80 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e  aultLogException
25a90 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  s, ModuleNotAvai
25aa0 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67  lableErrorMessag
25ab0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
25ac0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
25ad0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
25ae0 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
25af0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25b00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
25b50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25b60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
25b70 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61   /// Sets the ta
25b80 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ble error messag
25b90 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e  e to one that in
25ba0 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69  dicates the nati
25bb0 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
25bc0 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  /// module imple
25bd0 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74  mentation is not
25be0 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
25bf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
25c00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25c10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25c20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
25c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25c40 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
25c50 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
25c60 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
25c70 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
25c80 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
25c90 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
25ca0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25cb0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
25cc0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
25cd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
25ce0 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ue of <see cref=
25cf0 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  "SQLiteErrorCode
25d00 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20  .Error" />...   
25d10 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
25d20 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
25d30 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
25d40 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  tic SQLiteErrorC
25d50 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ode ModuleNotAva
25d60 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
25d70 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
25d80 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
25d90 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
25da0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
25db0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25dc0 20 20 20 20 20 20 53 65 74 43 75 72 73 6f 72 45        SetCursorE
25dd0 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73  rror(null, pCurs
25de0 6f 72 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72  or, DefaultLogEr
25df0 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
25e00 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75             Defau
25e10 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  ltLogExceptions,
25e20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
25e30 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
25e40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25e50 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
25e60 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
25e70 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
25e80 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
25e90 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
25ea0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
25eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25ef0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
25f00 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
25f10 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d  eModule Members.
25f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25f30 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25f40 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25f50 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25f60 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25f70 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
25f80 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25f90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
25fa0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25fb0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25fc0 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
25fd0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25fe0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25ff0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26000 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
26010 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26020 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26030 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
26040 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
26050 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26060 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26070 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26080 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
26090 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
260a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
260b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
260c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
260d0 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
260e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
260f0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26100 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26110 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
26120 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
26130 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
26140 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
26150 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
26160 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
26170 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
26180 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
26190 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
261a0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
261b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
261c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
261d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
261e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
261f0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
26200 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
26210 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26220 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
26230 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
26240 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26250 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
26260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26270 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
26280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26290 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
262a0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
262b0 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
262c0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
262d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
262e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
262f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
26300 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26310 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26320 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26330 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
26340 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
26350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26360 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
26370 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
26380 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
26390 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
263a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
263b0 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
263c0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
263d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
263e0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
263f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
26400 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
26410 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
26420 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
26430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26440 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
26450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26460 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
26470 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26480 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
26490 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
264a0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
264b0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
264c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
264d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
264e0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
264f0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
26500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26510 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
26520 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
26530 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26540 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
26550 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
26560 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
26570 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
26580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26590 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c    ModuleNotAvail
265a0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
265b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
265c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
265d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
265e0 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
265f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
26600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26610 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65  turn module.xCre
26620 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
26630 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
26640 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  Aux, argc, argv,
26650 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20   ref pVtab, ref 
26660 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
26670 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
26680 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
26690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
266d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
266e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
266f0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
26700 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
26710 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
26720 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
26730 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26740 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
26750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26760 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
26770 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Db">..          
26780 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
26790 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
267a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
267b0 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
267c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
267d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
267e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
267f0 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e  ram name="pAux">
26800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26810 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26820 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26830 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
26840 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
26850 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26860 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
26870 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26880 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
26890 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
268a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
268b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
268c0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
268d0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
268e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
268f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
26900 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26910 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
26920 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26930 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26940 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26950 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
26960 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26970 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
26980 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26990 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
269a0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
269b0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
269c0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
269d0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
269e0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
269f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26a00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26a10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
26a20 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f  aram name="pErro
26a30 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
26a40 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
26a50 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26a60 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
26a70 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
26a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26a90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
26ab0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26ac0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26ad0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26ae0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
26af0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
26b00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26b10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
26b20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
26b30 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
26b40 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
26b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
26b60 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
26b70 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
26b80 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
26b90 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
26ba0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
26bb0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
26bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26bd0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
26be0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
26bf0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
26c00 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
26c10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26c20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26c30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26c50 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
26c60 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
26c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26c80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
26c90 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
26ca0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
26cb0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
26cc0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
26cd0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
26ce0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d00 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
26d10 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
26d20 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  PtrFromString(..
26d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d40 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f          ModuleNo
26d50 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
26d60 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  essage);....    
26d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d80 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
26d90 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
26da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
26db0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26dc0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
26dd0 65 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  e.xConnect(..   
26de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26df0 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67 63   pDb, pAux, argc
26e00 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74 61  , argv, ref pVta
26e10 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d  b, ref pError);.
26e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e80 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
26e90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26ea0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26eb0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26ec0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26ed0 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
26ee0 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
26ef0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26f00 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
26f10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26f20 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
26f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26f40 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26f50 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26f60 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
26f70 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
26f80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26f90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
26fb0 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
26fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26fd0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26fe0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26ff0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
27000 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
27010 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27020 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
27030 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
27040 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
27050 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
27060 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
27070 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
27080 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
27090 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
270a0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
270b0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
270c0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
270d0 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
270e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270f0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
27100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
27110 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
27120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
27130 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
27140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27150 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27160 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
27170 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
27180 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
27190 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
271a0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
271b0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
271c0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
271d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
271e0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
271f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27200 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
27210 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
27220 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
27230 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27240 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
27250 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70 56  le.xBestIndex(pV
27260 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20  tab, pIndex);.. 
27270 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
27280 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
27290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
272d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
272e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
272f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
27300 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
27310 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27320 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
27330 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27340 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27350 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27360 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
27370 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
27380 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27390 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
273a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
273b0 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
273c0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
273d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
273e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
273f0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
27400 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
27410 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
27420 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
27430 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
27440 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
27450 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27460 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
27470 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
27480 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
27490 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28  ode xDisconnect(
274a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
274b0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
274c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
274e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
274f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27500 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
27510 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
27520 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
27530 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27540 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
27550 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
27560 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
27570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27580 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
27590 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
275a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
275b0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
275c0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
275d0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
275e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
275f0 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
27600 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
27610 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27620 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
27630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27670 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
27680 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
27690 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
276a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
276b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
276c0 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
276d0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
276e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
276f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27700 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
27710 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
27720 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
27730 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27740 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27750 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68  Destroy" /> meth
27760 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27770 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27780 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27790 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
277a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
277b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
277c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
277d0 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
277e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
277f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
27800 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
27810 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
27820 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
27830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27840 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
27850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
27860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
27870 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27880 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
27890 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
278a0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
278b0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
278c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
278d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
278e0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
278f0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
27900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27910 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
27920 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
27930 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
27940 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
27950 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
27960 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
27970 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
27980 75 6c 65 2e 78 44 65 73 74 72 6f 79 28 70 56 74  ule.xDestroy(pVt
27990 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
279a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
279b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
279c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
27a00 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
27a10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
27a20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
27a30 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
27a40 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
27a50 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
27a60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27a70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
27a80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27a90 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
27aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27ab0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27ac0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27ad0 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
27ae0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27af0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27b00 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
27b10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
27b20 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
27b30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27b40 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27b50 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27b60 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
27b70 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27b80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27ba0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
27bb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
27bc0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27bd0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27be0 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
27bf0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27c00 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
27c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
27c20 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
27c30 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
27c40 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
27c50 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
27c60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
27c70 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
27c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c90 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
27ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27cb0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27cc0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
27cd0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
27ce0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
27cf0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27d00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
27d10 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
27d20 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
27d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27d40 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
27d50 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
27d60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
27d70 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
27d80 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
27d90 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
27da0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
27db0 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61 62  dule.xOpen(pVtab
27dc0 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b 0d  , ref pCursor);.
27dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
27de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
27e40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
27e50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27e60 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27e70 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27e80 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
27e90 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27ea0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
27eb0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
27ec0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27ed0 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
27ee0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
27ef0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
27f00 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
27f10 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
27f20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27f30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27f40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27f50 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
27f60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
27f70 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
27f80 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
27f90 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
27fa0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27fb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
27fc0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
27fd0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
27fe0 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28  rrorCode xClose(
27ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28000 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
28010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28020 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
28030 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28040 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28050 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
28060 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
28070 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
28080 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28090 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
280a0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
280b0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
280c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
280d0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
280e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
280f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28100 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
28110 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
28120 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
28130 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28140 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  rn module.xClose
28150 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
28160 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28170 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
28180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
281c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
281d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
281e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
281f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28200 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28210 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
28220 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28230 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28240 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28250 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
28260 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
28270 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28280 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28290 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
282a0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
282b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
282c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
282d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
282e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
282f0 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20  xNum">..        
28300 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28310 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28320 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28330 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
28340 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28350 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28360 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28370 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74  aram name="idxSt
28380 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
28390 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
283a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
283b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
283c0 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
283d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
283e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
283f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28400 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
28410 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28420 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
28430 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
28440 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
28450 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28460 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28470 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
28480 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28490 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
284a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
284b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
284c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
284d0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
284e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
284f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28500 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28510 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
28520 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28530 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28540 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28550 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
28560 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28570 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
28580 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
28590 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
285a0 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d  orCode xFilter(.
285b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
285c0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
285d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
285e0 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
285f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
28600 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20  ntPtr idxStr,.. 
28610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28620 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
28630 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
28640 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20   argv..         
28650 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
28660 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28670 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28680 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
28690 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
286a0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
286b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
286c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
286d0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
286e0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
286f0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
28700 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
28710 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
28720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28730 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
28740 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72  vailableCursorEr
28750 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d  ror(pCursor);...
28760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28770 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
28780 46 69 6c 74 65 72 28 70 43 75 72 73 6f 72 2c 20  Filter(pCursor, 
28790 69 64 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c 20  idxNum, idxStr, 
287a0 61 72 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20 20  argc, argv);..  
287b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
287c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
287d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28820 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
28830 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
28840 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
28850 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
28860 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65  ule.xNext" /> me
28870 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28880 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28890 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
288a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
288b0 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
288c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
288d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
288e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
288f0 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
28900 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28910 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28920 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28930 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28940 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28950 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28960 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28970 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f  .xNext" /> metho
28980 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28990 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
289a0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
289b0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
289c0 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
289d0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
289e0 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
289f0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
28a00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28a10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28a30 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
28a40 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
28a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28a60 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28a70 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
28a80 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
28a90 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
28aa0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
28ab0 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
28ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ad0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
28ae0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
28af0 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
28b00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
28b10 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
28b20 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f 72  le.xNext(pCursor
28b30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
28b40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28b50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28ba0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28bb0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28bc0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28bd0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28be0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20  iveModule.xEof" 
28bf0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
28c10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
28c20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
28c30 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
28c40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28c50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
28c60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
28c70 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
28c80 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28c90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
28ca0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28cb0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
28cc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28cd0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28ce0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28cf0 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65  dule.xEof" /> me
28d00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28d10 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
28d20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
28d30 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28 0d  ublic int xEof(.
28d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28d50 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
28d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28d70 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
28d80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28d90 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
28da0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
28db0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
28dc0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
28dd0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
28de0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
28df0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
28e00 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
28e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
28e30 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
28e40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28e50 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75              Modu
28e60 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
28e70 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
28e80 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
28e90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
28ea0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
28eb0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28ec0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
28ed0 6d 6f 64 75 6c 65 2e 78 45 6f 66 28 70 43 75 72  module.xEof(pCur
28ee0 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  sor);..         
28ef0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
28f00 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
28f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
28f50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
28f60 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
28f70 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28f80 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28f90 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
28fa0 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
28fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28fc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
28fd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28fe0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
28ff0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
29000 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29010 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29020 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
29030 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
29040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29050 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29070 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78  am name="pContex
29080 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t">..           
29090 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
290a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
290b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
290c0 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  umn" /> method..
290d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
290e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
290f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29100 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
29110 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29120 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29130 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29140 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
29150 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29160 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
29170 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
29180 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
29190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
291a0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
291b0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
291c0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
291d0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
291e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
291f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
29200 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
29210 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
29220 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  lumn(..         
29230 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
29240 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
29250 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
29260 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20  Context,..      
29270 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
29280 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
29290 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
292a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
292b0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
292c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
292d0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
292e0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
292f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
29300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29310 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
29320 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
29330 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29340 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
29350 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
29360 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29370 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
29380 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
29390 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
293a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
293b0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f  eturn module.xCo
293c0 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70 43  lumn(pCursor, pC
293d0 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b 0d  ontext, index);.
293e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
293f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29440 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
29450 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
29460 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29470 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29480 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29490 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
294a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
294b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
294c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
294d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
294e0 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
294f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29500 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
29510 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
29520 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e  odule.xRowId" />
29530 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29540 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29550 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
29560 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29570 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
29580 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29590 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
295a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
295b0 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
295c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
295d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
295e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
295f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
29600 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29610 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29620 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29630 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
29640 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29650 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
29660 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
29670 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
29680 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
29690 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
296a0 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
296b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
296c0 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
296d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
296e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
296f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29700 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
29710 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
29720 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
29730 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
29740 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29750 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
29760 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
29770 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
29780 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
29790 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
297a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
297b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
297c0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
297d0 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
297e0 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
297f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
29800 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75  odule.xRowId(pCu
29810 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29  rsor, ref rowId)
29820 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
29830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29880 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
29890 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
298a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
298b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
298c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
298d0 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
298e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
298f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29900 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29910 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
29920 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
29930 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29940 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29950 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29960 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
29970 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29990 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
299a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
299b0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
299c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
299d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
299e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
299f0 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
29a00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29a10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29a30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
29a40 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
29a50 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29a60 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29a70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
29a80 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
29a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29aa0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29ac0 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
29ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29ae0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29af0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29b00 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
29b10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
29b20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29b30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29b40 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
29b50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29b60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29b70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29b80 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
29b90 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
29ba0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29bb0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
29bc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
29bd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
29be0 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
29bf0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
29c00 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
29c10 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
29c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29c30 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
29c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c50 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
29c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
29c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29c90 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
29ca0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
29cb0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
29cc0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
29cd0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
29ce0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
29cf0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
29d00 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
29d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
29d20 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
29d30 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
29d40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
29d50 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
29d60 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
29d70 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
29d80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
29d90 64 75 6c 65 2e 78 55 70 64 61 74 65 28 70 56 74  dule.xUpdate(pVt
29da0 61 62 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20  ab, argc, argv, 
29db0 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20  ref rowId);..   
29dc0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
29dd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
29de0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
29e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29e30 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
29e40 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29e50 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29e60 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29e70 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65  le.xBegin" /> me
29e80 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29e90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
29ea0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29eb0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29ec0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
29ed0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29ee0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29ef0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29f00 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
29f10 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29f20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29f30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
29f40 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
29f50 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29f60 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29f70 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29f80 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
29f90 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29fa0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
29fb0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
29fc0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
29fd0 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
29fe0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29ff0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
2a000 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2a010 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a020 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2a030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a040 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
2a050 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
2a060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a070 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2a080 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2a090 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
2a0a0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
2a0b0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
2a0c0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
2a0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0e0 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
2a0f0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
2a100 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
2a110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a120 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
2a130 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20  Begin(pVtab);.. 
2a140 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2a150 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a1a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a1b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2a1c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2a1d0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2a1e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2a1f0 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
2a200 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2a210 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2a220 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a230 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2a240 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2a250 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a260 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a270 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a280 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
2a290 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2a2a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2a2b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2a2c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2a2d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2a2e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2a2f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2a300 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64  xSync" /> method
2a310 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a320 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2a330 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2a340 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2a350 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
2a360 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2a370 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
2a380 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2a390 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a3a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2a3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a3c0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2a3d0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a3f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2a400 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2a410 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2a420 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2a430 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2a440 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a460 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2a470 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2a480 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
2a490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2a4a0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79  eturn module.xSy
2a4b0 6e 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  nc(pVtab);..    
2a4c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a4d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a520 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a530 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2a540 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2a550 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2a560 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2a570 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
2a580 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a590 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2a5a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a5b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2a5c0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2a5d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2a5e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2a5f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2a600 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
2a610 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2a620 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2a630 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a640 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2a650 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a660 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a670 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a680 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
2a690 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2a6a0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2a6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2a6c0 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2a6d0 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
2a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2a6f0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
2a700 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2a710 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a730 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2a740 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
2a750 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
2a760 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2a770 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2a780 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2a790 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
2a7a0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
2a7b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2a7c0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2a7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a7e0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2a7f0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
2a800 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
2a810 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a820 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2a830 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74 61 62 29  e.xCommit(pVtab)
2a840 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2a850 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2a8b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2a8c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a8d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2a8e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2a8f0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2a900 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
2a910 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a920 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2a930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2a940 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2a950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a960 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2a970 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2a980 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2a990 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
2a9a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a9b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a9c0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2a9d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2a9e0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2a9f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2aa00 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2aa10 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64  lback" /> method
2aa20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2aa30 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2aa40 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2aa50 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2aa60 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  e xRollback(..  
2aa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2aa80 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
2aa90 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2aaa0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2aab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2aac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2aad0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2aae0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2aaf0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ab00 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2ab10 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2ab20 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2ab30 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2ab40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2ab50 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2ab60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab70 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2ab80 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2ab90 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2aba0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2abb0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2abc0 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62  .xRollback(pVtab
2abd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2abe0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2abf0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ac40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ac50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ac60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2ac70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2ac80 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
2ac90 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
2aca0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2acb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2acc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2acd0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2ace0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2acf0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2ad00 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2ad10 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2ad20 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
2ad30 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2ad40 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2ad50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ad60 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2ad70 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  nArg">..        
2ad80 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ad90 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ada0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2adb0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
2adc0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2add0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2ade0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2adf0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2ae00 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  "zName">..      
2ae10 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2ae20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2ae30 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2ae40 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
2ae50 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2ae60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2ae70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2ae80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2ae90 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20  e="callback">.. 
2aea0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2aeb0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2aec0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2aed0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2aee0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
2aef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2af00 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2af10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2af20 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44  m name="pClientD
2af30 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ata">..         
2af40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2af50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2af60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2af70 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
2af80 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2af90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2afa0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2afb0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2afc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2afd0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2afe0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2aff0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2b000 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
2b010 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b020 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2b030 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2b040 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
2b050 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2b060 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2b070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b080 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
2b090 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2b0a0 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20  Ptr zName,..    
2b0b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2b0c0 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
2b0d0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
2b0e0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
2b0f0 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
2b100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b110 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2b120 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b130 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2b140 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2b150 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
2b160 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
2b170 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2b180 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2b190 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2b1a0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
2b1b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b1c0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2b1d0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2b1e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
2b200 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2b210 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2b220 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b230 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b         return 0;
2b240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b250 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2b260 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2b270 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2b280 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2b290 20 20 20 20 20 20 20 20 20 70 56 74 61 62 2c 20           pVtab, 
2b2a0 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66  nArg, zName, ref
2b2b0 20 63 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70   callback, ref p
2b2c0 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20  ClientData);..  
2b2d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2b2e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b340 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2b350 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2b360 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2b370 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2b380 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
2b390 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2b3a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b3b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b3c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b3d0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2b3e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2b3f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2b400 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2b410 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
2b420 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2b430 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2b440 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b450 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
2b460 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ew">..          
2b470 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2b480 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2b490 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
2b4a0 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  name" /> method.
2b4b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b4c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2b4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2b4e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2b4f0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2b500 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b510 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2b520 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
2b530 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b540 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2b550 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2b560 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2b570 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  e xRename(..    
2b580 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2b590 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2b5a0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2b5b0 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20 20  r zNew..        
2b5c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2b5d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b5e0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2b5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b600 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2b610 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2b620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b630 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2b640 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2b650 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2b660 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2b670 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2b680 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2b690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b6a0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2b6b0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2b6c0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
2b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2b6e0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65  eturn module.xRe
2b6f0 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65 77  name(pVtab, zNew
2b700 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2b710 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2b720 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b760 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b770 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2b780 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b790 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2b7a0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2b7b0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
2b7c0 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  oint" /> method.
2b7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b7e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2b7f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2b800 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2b810 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2b820 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2b830 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2b840 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
2b850 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
2b860 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b870 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2b880 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2b890 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
2b8a0 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
2b8b0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2b8c0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2b8d0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2b8e0 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
2b8f0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2b900 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2b910 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b920 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2b930 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2b940 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2b950 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2b960 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
2b970 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2b980 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2b990 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2b9a0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2b9b0 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70  ErrorCode xSavep
2b9c0 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
2b9d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2b9e0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2b9f0 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
2ba00 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
2ba10 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2ba20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ba30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2ba40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2ba50 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
2ba60 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
2ba70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2ba80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ba90 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2baa0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
2bab0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2bac0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2bad0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2bae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2baf0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2bb00 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
2bb10 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
2bb20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2bb30 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65  urn module.xSave
2bb40 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53 61  point(pVtab, iSa
2bb50 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
2bb60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2bb70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2bb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2bbc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2bbd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2bbe0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2bbf0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2bc00 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2bc10 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
2bc20 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2bc30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2bc40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2bc50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2bc60 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2bc70 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2bc80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2bc90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2bca0 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
2bcb0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2bcc0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2bcd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bce0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61  <param name="iSa
2bcf0 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
2bd00 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2bd10 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2bd20 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2bd30 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
2bd40 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2bd50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2bd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bd70 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2bd80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2bd90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2bda0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2bdb0 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e  ule.xRelease" />
2bdc0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2bdd0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2bde0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2bdf0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2be00 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
2be10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2be20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2be30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2be40 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
2be50 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
2be60 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2be70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2be80 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2be90 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2bea0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
2beb0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
2bec0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2bed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bee0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2bef0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
2bf00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf10 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
2bf20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2bf30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2bf40 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
2bf50 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
2bf60 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
2bf70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2bf80 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65   module.xRelease
2bf90 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69  (pVtab, iSavepoi
2bfa0 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt);..          
2bfb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2bfc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2bfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c000 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2c010 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2c020 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2c030 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2c040 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2c050 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2c060 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
2c070 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2c080 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2c090 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c0a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2c0b0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2c0c0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2c0d0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c0e0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2c0f0 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65  ollbackTo" /> me
2c100 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2c110 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2c120 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c130 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
2c140 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
2c150 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2c160 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2c170 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2c180 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
2c190 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c1a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c1b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2c1c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2c1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c1e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c1f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c200 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2c210 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  kTo" /> method..
2c220 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c230 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2c240 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2c250 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2c260 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
2c270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2c280 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2c290 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
2c2a0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
2c2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2c2c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c2e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2c2f0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
2c300 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
2c310 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2c320 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2c330 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2c340 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
2c350 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
2c360 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2c370 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2c380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c390 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2c3a0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
2c3b0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
2c3c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c3d0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2c3e0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56  e.xRollbackTo(pV
2c3f0 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
2c400 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2c410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2c420 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2c430 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c480 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2c490 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
2c4a0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
2c4b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2c4c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c4d0 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
2c4e0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2c4f0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
2c500 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2c510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2c520 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
2c530 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
2c540 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c550 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
2c560 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2c570 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
2c580 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
2c590 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c5a0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2c5b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2c5c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c610 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2c620 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
2c630 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
2c640 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2c650 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
2c660 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;..            /
2c670 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c680 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2c690 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
2c6a0 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
2c6b0 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
2c6c0 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
2c6d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69             /// i
2c6e0 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
2c6f0 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
2c700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2c710 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2c720 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
2c730 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2c740 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2c750 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2c760 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
2c770 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
2c780 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
2c790 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2c7a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c7b0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2c7c0 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
2c7d0 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c7f0 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
2c800 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29  iteNativeModule)
2c810 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
2c820 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2c830 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2c840 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2c850 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c890 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2c8a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2c8b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c8c0 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
2c8d0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2c8e0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
2c8f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2c900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c910 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
2c920 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20  isposing">..    
2c930 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
2c940 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  zero if this met
2c950 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
2c960 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  led from the..  
2c970 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2c980 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65  ee cref="Dispose
2c990 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20  ()" /> method.  
2c9a0 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  Zero if this met
2c9b0 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a 20 20  hod is being..  
2c9c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61            /// ca
2c9d0 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20 66 69  lled from the fi
2c9e0 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20  nalizer...      
2c9f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2ca00 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2ca10 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65  private /* prote
2ca20 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20  cted virtual */ 
2ca30 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
2ca40 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
2ca50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2ca70 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
2ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2ca90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2caa0 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
2cab0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
2cac0 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
2cad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cae0 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2cb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70     //    // disp
2cb30 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
2cb40 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
2cb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb60 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cba0 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20     //}....      
2cbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2cbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbe0 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
2cbf0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
2cc00 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
2cc10 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
2cc20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc30 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2cc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2cc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2cc80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2cc90 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20  OTE: The module 
2cca0 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20  is not owned by 
2ccb0 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 64  us; therefore, d
2ccc0 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 20  o not..         
2ccd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2cce0 20 20 20 20 64 69 73 70 6f 73 65 20 69 74 2e 0d      dispose it..
2ccf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cd00 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2cd10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2cd20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29  (module != null)
2cd30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd40 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2cd50 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
2cd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd70 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
2cd80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2cda0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2cdb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2cdc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2cdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ce10 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
2ce20 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
2ce30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ce40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2ce50 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61          /// Fina
2ce60 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63  lizes this objec
2ce70 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2ce80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2ce90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2cea0 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61 74 69       ~SQLiteNati
2ceb0 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2cec0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ced0 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
2cee0 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
2cef0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2cf00 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2cf10 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
2cf20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2cf30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2cf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2cf90 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
2cfa0 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
2cfb0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2cfc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2cfd0 20 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f 6e   default version
2cfe0 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73   of the native s
2cff0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2d000 72 75 63 74 75 72 65 20 69 6e 20 75 73 65 2e 0d  ructure in use..
2d010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2d020 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d030 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2d040 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66  readonly int Def
2d050 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f  aultModuleVersio
2d060 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20 20  n = 2;..        
2d070 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2d080 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2d0d0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
2d0e0 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
2d0f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2d100 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2d110 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
2d120 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2d130 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2d140 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2d150 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
2d160 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2d170 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2d180 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
2d190 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2d1a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
2d1b0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d1c0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2d1d0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a   nativeModule;..
2d1e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d230 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2d240 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2d250 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2d260 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
2d270 6f 72 65 20 74 68 65 20 64 65 73 74 72 75 63 74  ore the destruct
2d280 6f 72 20 64 65 6c 65 67 61 74 65 20 74 6f 20 62  or delegate to b
2d290 65 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20 20  e passed to..   
2d2a0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
2d2b0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
2d2c0 20 76 69 61 20 74 68 65 20 73 71 6c 69 74 65 33   via the sqlite3
2d2d0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2d2e0 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  le_module()..   
2d2f0 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f       /// functio
2d300 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
2d310 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2d320 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61      private Unsa
2d330 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2d340 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 64  xDestroyModule d
2d350 65 73 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d  estroyModule;...
2d360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2d370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2d3c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2d3d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2d3e0 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2d3f0 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  re a pointer to 
2d400 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
2d410 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
2d420 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
2d430 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
2d440 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
2d450 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2d460 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
2d470 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
2d480 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2d490 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2d4a0 65 20 49 6e 74 50 74 72 20 64 69 73 70 6f 73 61  e IntPtr disposa
2d4b0 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20  bleModule;....  
2d4c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2d4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2d510 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2d520 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2d530 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2d540 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2d550 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2d560 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68   used to hold th
2d570 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69 76  e block of nativ
2d580 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 63 6f  e memory that co
2d590 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20 20 20  ntains..        
2d5a0 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65 20 73  /// the native s
2d5b0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2d5c0 72 75 63 74 75 72 65 20 61 73 73 6f 63 69 61 74  ructure associat
2d5d0 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a  ed with this obj
2d5e0 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
2d5f0 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72   instance when r
2d600 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e  unning on the .N
2d610 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
2d620 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  work...        /
2d630 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2d640 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
2d650 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d 6f 64  ntPtr pNativeMod
2d660 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ule;..#endif....
2d670 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2d680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d6c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2d6d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2d6e0 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2d6f0 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2d700 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2d710 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20 61 73  ble instances as
2d720 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
2d730 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
2d740 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74  module.  The nat
2d750 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
2d760 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
2d770 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
2d780 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69   /// structure i
2d790 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e  s used to key in
2d7a0 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74 69  to this collecti
2d7b0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2d7c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2d7d0 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69 63       private Dic
2d7e0 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20  tionary<IntPtr, 
2d7f0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
2d800 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20  le> tables;.... 
2d810 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2d870 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d880 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
2d890 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65  is used to store
2d8a0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
2d8b0 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74 61 6e  le cursor instan
2d8c0 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ces..        ///
2d8d0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2d8e0 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54   this module.  T
2d8f0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
2d900 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  r to the..      
2d910 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74    /// sqlite3_vt
2d920 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
2d930 64 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  d structure is u
2d940 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20  sed to key into 
2d950 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
2d960 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  / collection... 
2d970 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2d980 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2d990 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2d9a0 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2d9b0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
2d9c0 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a  or> cursors;....
2d9d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2da20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2da30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2da40 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2da50 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2da60 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2da70 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73  ble function ins
2da80 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20  tances..        
2da90 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
2daa0 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e  ith this module.
2dab0 20 20 54 68 65 20 63 61 73 65 2d 69 6e 73 65 6e    The case-insen
2dac0 73 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 20  sitive function 
2dad0 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  name..        //
2dae0 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72  / and the number
2daf0 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 28 77   of arguments (w
2db00 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20 22  ith -1 meaning "
2db10 61 6e 79 22 29 20 61 72 65 20 75 73 65 64 20 74  any") are used t
2db20 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  o..        /// c
2db30 6f 6e 73 74 72 75 63 74 20 74 68 65 20 73 74 72  onstruct the str
2db40 69 6e 67 20 74 68 61 74 20 69 73 20 75 73 65 64  ing that is used
2db50 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69   to key into thi
2db60 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  s collection... 
2db70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2db80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2db90 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2dba0 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74 65  y<string, SQLite
2dbb0 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74 69  Function> functi
2dbc0 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  ons;..        #e
2dbd0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2dbe0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2dbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2dc30 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2dc40 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f  ublic Constructo
2dc50 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
2dc60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2dc70 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
2dc80 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
2dc90 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
2dca0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2dcb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2dcc0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
2dcd0 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ame">..        /
2dce0 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
2dcf0 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69 73  he module.  This
2dd00 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f   parameter canno
2dd10 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t be null...    
2dd20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2dd30 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2dd40 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73 74   SQLiteModule(st
2dd50 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20 20  ring name)..    
2dd60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2dd70 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
2dd80 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2dd90 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2dda0 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
2ddb0 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a  ption("name");..
2ddc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2ddd0 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d  is.name = name;.
2dde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
2ddf0 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65 77 20 44  s.tables = new D
2de00 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72  ictionary<IntPtr
2de10 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  , SQLiteVirtualT
2de20 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20 20  able>();..      
2de30 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 73 6f        this.curso
2de40 72 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  rs = new Diction
2de50 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69  ary<IntPtr, SQLi
2de60 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
2de70 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20  rsor>();..      
2de80 20 20 20 20 20 20 74 68 69 73 2e 66 75 6e 63 74        this.funct
2de90 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69 63 74 69  ions = new Dicti
2dea0 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51  onary<string, SQ
2deb0 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29 3b  LiteFunction>();
2dec0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2ded0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2dee0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2def0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df30 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2df40 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d  egion Internal M
2df50 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2df60 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2df70 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73         /// Calls
2df80 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
2df90 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2dfa0 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 72 65 61  in order to crea
2dfb0 74 65 20 61 20 6e 65 77 0d 0a 20 20 20 20 20 20  te a new..      
2dfc0 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c 65    /// disposable
2dfd0 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69   module containi
2dfe0 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  ng the implement
2dff0 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75  ation of a virtu
2e000 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
2e010 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2e020 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2e030 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22  param name="pDb"
2e040 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2e050 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62 61  he native databa
2e060 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f  se connection po
2e070 69 6e 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20  inter to use... 
2e080 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2e090 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2e0a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2e0b0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
2e0c0 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
2e0d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2e0e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2e0f0 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43 72  internal bool Cr
2e100 65 61 74 65 44 69 73 70 6f 73 61 62 6c 65 4d 6f  eateDisposableMo
2e110 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
2e120 20 20 20 49 6e 74 50 74 72 20 70 44 62 0d 0a 20     IntPtr pDb.. 
2e130 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2e140 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e150 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 61       if (disposa
2e160 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74  bleModule != Int
2e170 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2e180 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e190 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  n true;....     
2e1a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e         IntPtr pN
2e1b0 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ame = IntPtr.Zer
2e1c0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
2e1d0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2e1e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e1f0 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 53 51        pName = SQ
2e200 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
2e210 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
2e220 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
2e230 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2e240 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2e250 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74  lite3_module nat
2e260 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20  iveModule =..   
2e270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e280 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
2e290 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  odule();....    
2e2a0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 74              dest
2e2b0 72 6f 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20  royModule = new 
2e2c0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e2d0 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75  ods.xDestroyModu
2e2e0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2e2f0 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f           xDestro
2e300 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66  yModule);....#if
2e310 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2e320 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2e330 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
2e340 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d  posableModule =.
2e350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e360 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
2e370 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2e380 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2e390 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  le_module(..    
2e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3b0 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20      pDb, pName, 
2e3c0 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ref nativeModule
2e3d0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64  , IntPtr.Zero, d
2e3e0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a  estroyModule);..
2e3f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e400 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f 73    return (dispos
2e410 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
2e420 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c  tPtr.Zero);..#el
2e430 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
2e440 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
2e450 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d       disposableM
2e460 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  odule =..       
2e470 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
2e480 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e490 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  .sqlite3_create_
2e4a0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2e4b0 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20  e_interop(..    
2e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4d0 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 41     pDb, pName, A
2e4e0 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64  llocateNativeMod
2e4f0 75 6c 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a 20  uleInterop(),.. 
2e500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e510 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2e520 6c 65 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61 74  le.iVersion, nat
2e530 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2e540 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2e550 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e560 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
2e570 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2e580 42 65 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20 20  BestIndex,..    
2e590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5a0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2e5b0 78 44 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61 74  xDisconnect, nat
2e5c0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2e5d0 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
2e5e0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2e5f0 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c 20  veModule.xOpen, 
2e600 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  nativeModule.xCl
2e610 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ose,..          
2e620 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e630 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
2e640 72 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  r, nativeModule.
2e650 78 4e 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  xNext,..        
2e660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2e670 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
2e680 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2e690 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20  Column,..       
2e6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e6b0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2e6c0 77 49 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  wId, nativeModul
2e6d0 65 2e 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20  e.xUpdate,..    
2e6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e6f0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2e700 78 42 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d 6f  xBegin, nativeMo
2e710 64 75 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20 20  dule.xSync,..   
2e720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e730 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e740 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76 65  .xCommit, native
2e750 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2e760 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e770 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e780 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
2e790 74 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75  tion, nativeModu
2e7a0 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20 20  le.xRename,..   
2e7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e7c0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e7d0 2e 78 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61 74  .xSavepoint, nat
2e7e0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2e7f0 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
2e800 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2e810 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2e820 63 6b 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ckTo, IntPtr.Zer
2e830 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65  o, destroyModule
2e840 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2e850 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 69        return (di
2e860 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21  sposableModule !
2e870 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2e880 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2e890 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
2e8a0 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
2e8b0 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
2e8c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2e8d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2e8e0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
2e8f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e900 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61           if (pNa
2e910 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  me != IntPtr.Zer
2e920 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2e930 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e940 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2e950 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61  eMemory.Free(pNa
2e960 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
2e970 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20            pName 
2e980 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
2e990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2e9b0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2e9c0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2e9d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2ea30 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
2ea40 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
2ea50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2ea60 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
2ea70 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
2ea80 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
2ea90 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20  re library when 
2eaa0 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
2eab0 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61      /// module a
2eac0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2ead0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2eae0 6e 63 65 20 69 73 20 62 65 69 6e 67 20 64 65 73  nce is being des
2eaf0 74 72 6f 79 65 64 20 64 75 65 0d 0a 20 20 20 20  troyed due..    
2eb00 20 20 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20 70      /// to its p
2eb10 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
2eb20 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20 20   being closed.  
2eb30 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20 63  It may also be c
2eb40 61 6c 6c 65 64 20 62 79 0d 0a 20 20 20 20 20 20  alled by..      
2eb50 20 20 2f 2f 2f 20 74 68 65 20 22 76 74 73 68 69    /// the "vtshi
2eb60 6d 22 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68 65  m" module if/whe
2eb70 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64 69  n the sqlite3_di
2eb80 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66  spose_module() f
2eb90 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  unction..       
2eba0 20 2f 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e 0d   /// is called..
2ebb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2ebc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2ebd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2ebe0 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
2ebf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2ec00 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
2ec10 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
2ec20 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
2ec30 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73  odule, as it was
2ec40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
2ec50 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
2ec60 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2ec70 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
2ec80 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63  e module instanc
2ec90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
2eca0 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20  as created...   
2ecb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2ecc0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2ecd0 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79  te void xDestroy
2ece0 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  Module(..       
2ecf0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69       IntPtr pCli
2ed00 65 6e 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20 55  entData /* NOT U
2ed10 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
2ed20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
2ed30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ed40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ed50 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
2ed60 6f 69 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65 20  oint, just make 
2ed70 73 75 72 65 20 74 68 61 74 20 74 68 69 73 20 6e  sure that this n
2ed80 61 74 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20 20  ative module..  
2ed90 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2eda0 20 20 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f 74     handle is not
2edb0 20 72 65 75 73 65 64 2c 20 6e 6f 72 20 70 61 73   reused, nor pas
2edc0 73 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61 74  sed into the nat
2edd0 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
2ede0 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2edf0 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
2ee00 28 29 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74 65  () function late
2ee10 72 20 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e 0d  r (i.e. if/when.
2ee20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
2ee30 20 20 20 20 20 20 74 68 65 20 44 69 73 70 6f 73        the Dispos
2ee40 65 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 74 68  e() method of th
2ee50 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2ee60 63 65 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d 0a  ce is called)...
2ee70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2ee80 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
2ee90 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20 49  osableModule = I
2eea0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2eeb0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2eec0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2eed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2ef10 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2ef20 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2ef30 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75  Creates and retu
2ef40 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  rns the native s
2ef50 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
2ef60 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
2ef70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
2ef80 6e 66 69 67 75 72 65 64 20 28 6f 72 20 64 65 66  nfigured (or def
2ef90 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d  ault) <see cref=
2efa0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2efb0 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
2efc0 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20    /// interface 
2efd0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
2efe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2eff0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2f000 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2f010 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2f020 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2f030 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2f040 73 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67 75  sing the configu
2f050 72 65 64 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  red (or..       
2f060 20 2f 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c 73   /// default) <s
2f070 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2f080 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
2f090 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   interface..    
2f0a0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
2f0b0 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
2f0c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2f0d0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2f0e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f0f0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2f100 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  ule AllocateNati
2f110 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2f120 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f130 20 20 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63 61     return Alloca
2f140 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 47  teNativeModule(G
2f150 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d  etNativeModuleIm
2f160 70 6c 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  pl());..        
2f170 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1c0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
2f1d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2f1e0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f  EWORK..        /
2f1f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2f200 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
2f210 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  s and returns a 
2f220 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62 74  memory block obt
2f230 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53  ained from the S
2f240 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
2f250 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20      /// library 
2f260 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2f270 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2f280 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2f290 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20  e for this..    
2f2a0 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
2f2b0 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e  nstance when run
2f2c0 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54  ning on the .NET
2f2d0 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
2f2e0 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rk...        ///
2f2f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2f300 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2f310 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2f320 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2f330 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65  er to the native
2f340 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2f350 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
2f360 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2f370 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
2f380 61 74 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63  ate IntPtr Alloc
2f390 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  ateNativeModuleI
2f3a0 6e 74 65 72 6f 70 28 29 0d 0a 20 20 20 20 20 20  nterop()..      
2f3b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f3c0 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75   if (pNativeModu
2f3d0 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
2f3e0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2f3f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f400 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2f410 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
2f420 4e 6f 20 65 61 73 79 20 77 61 79 20 74 6f 20 64  No easy way to d
2f430 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a  etermine the siz
2f440 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
2f450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f460 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2f470 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2f480 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
2f490 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
2f4a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2f4b0 20 20 20 20 20 43 6f 6d 70 61 63 74 20 46 72 61       Compact Fra
2f4c0 6d 65 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f 72  mework; therefor
2f4d0 65 2c 20 6a 75 73 74 20 62 61 73 65 20 74 68 65  e, just base the
2f4e0 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20   size..         
2f4f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2f500 6f 6e 20 77 68 61 74 20 77 65 20 6b 6e 6f 77 3a  on what we know:
2f510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f520 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2f530 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54        //       T
2f540 68 65 72 65 20 69 73 20 6f 6e 65 20 69 6e 74 65  here is one inte
2f550 67 65 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ger member...   
2f560 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2f570 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65 20        There are 
2f580 32 32 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  22 function poin
2f590 74 65 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20 20  ter members...  
2f5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2f5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f5c0 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20    pNativeModule 
2f5d0 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
2f5e0 6c 6c 6f 63 61 74 65 28 32 33 20 2a 20 49 6e 74  llocate(23 * Int
2f5f0 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
2f600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2f610 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20   (pNativeModule 
2f620 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
2f630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f640 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f       throw new O
2f650 75 74 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70 74  utOfMemoryExcept
2f660 69 6f 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f 64  ion("sqlite3_mod
2f670 75 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ule");..        
2f680 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f690 20 20 20 20 20 72 65 74 75 72 6e 20 70 4e 61 74       return pNat
2f6a0 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  iveModule;..    
2f6b0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
2f6c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f710 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2f720 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2f730 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
2f740 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  nd returns the n
2f750 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64  ative sqlite_mod
2f760 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73  ule structure us
2f770 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
2f780 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
2f790 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f7a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
2f7b0 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
2f7c0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
2f7d0 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2f7e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2f7f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2f800 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
2f810 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2f820 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2f830 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2f840 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
2f850 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2f860 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
2f870 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
2f880 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2f890 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2f8a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2f8b0 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  The native sqlit
2f8c0 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
2f8d0 72 65 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  re using the spe
2f8e0 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  cified..        
2f8f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
2f900 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2f910 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65  le" /> interface
2f920 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2f930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2f940 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2f950 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
2f960 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2f970 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c  lite3_module All
2f980 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  ocateNativeModul
2f990 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2f9a0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2f9b0 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
2f9c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2f9d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f9e0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d    nativeModule =
2f9f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2fa00 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2fa10 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20 20  _module();..    
2fa20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2fa30 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20  dule.iVersion = 
2fa40 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72  DefaultModuleVer
2fa50 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sion;....       
2fa60 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2fa70 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2fa80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fa90 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2faa0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20  odule.xCreate = 
2fab0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2fac0 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28  Methods.xCreate(
2fad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fae0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72 65       module.xCre
2faf0 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
2fb00 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2fb10 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d  odule.xConnect =
2fb20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2fb30 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63  eMethods.xConnec
2fb40 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2fb50 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2fb60 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  Connect);....   
2fb70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2fb80 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
2fb90 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
2fba0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2fbb0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2fbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbd0 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
2fbe0 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
2fbf0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2fc00 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2fc10 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2fc20 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2fc30 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2fc40 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2fc50 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b  le.xDisconnect);
2fc60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fc70 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2fc80 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20  .xDestroy = new 
2fc90 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2fca0 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20  ods.xDestroy(.. 
2fcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fcc0 20 20 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72     module.xDestr
2fcd0 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  oy);....        
2fce0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2fcf0 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77  dule.xOpen = new
2fd00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2fd10 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20  hods.xOpen(..   
2fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd30 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d   module.xOpen);.
2fd40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2fd50 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2fd60 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
2fd70 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2fd80 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  .xClose(..      
2fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2fda0 64 75 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d  dule.xClose);...
2fdb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fdc0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2fdd0 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
2fde0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2fdf0 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2fe00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2fe10 64 75 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d 0a  dule.xFilter);..
2fe20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fe30 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2fe40 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
2fe50 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2fe60 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
2fe70 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2fe80 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  e.xNext);....   
2fe90 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2fea0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
2feb0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2fec0 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d 6f  eMethods.xEof(mo
2fed0 64 75 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20  dule.xEof);.... 
2fee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2fef0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
2ff00 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  umn = new Unsafe
2ff10 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2ff20 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
2ff30 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2ff40 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a  le.xColumn);....
2ff50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff60 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2ff70 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  wId = new Unsafe
2ff80 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2ff90 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20  owId(..         
2ffa0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2ffb0 65 2e 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  e.xRowId);....  
2ffc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2ffd0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
2ffe0 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
2fff0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70  ativeMethods.xUp
30000 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  date(..         
30010 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
30020 65 2e 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20  e.xUpdate);.... 
30030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
30040 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
30050 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  in = new UnsafeN
30060 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
30070 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
30080 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
30090 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20  .xBegin);....   
300a0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
300b0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20  iveModule.xSync 
300c0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
300d0 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28  veMethods.xSync(
300e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
300f0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 79        module.xSy
30100 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nc);....        
30110 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
30120 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e  dule.xCommit = n
30130 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
30140 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d  ethods.xCommit(.
30150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30160 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d       module.xCom
30170 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  mit);....       
30180 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
30190 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20  odule.xRollback 
301a0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
301b0 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62  veMethods.xRollb
301c0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
301d0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
301e0 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a  .xRollback);....
301f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30200 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
30210 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77  ndFunction = new
30220 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
30230 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69  hods.xFindFuncti
30240 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
30250 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
30260 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d  xFindFunction);.
30270 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30280 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
30290 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e  xRename = new Un
302a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
302b0 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  s.xRename(..    
302c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302d0 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29 3b  module.xRename);
302e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
302f0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30300 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65  .xSavepoint = ne
30310 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
30320 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74  thods.xSavepoint
30330 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30340 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53         module.xS
30350 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
30360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
30370 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
30380 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ase = new Unsafe
30390 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
303a0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
303b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
303c0 75 6c 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d 0a  ule.xRelease);..
303d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
303e0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
303f0 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
30400 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
30410 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
30420 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30430 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
30440 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20  ollbackTo);..   
30450 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30460 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
30470 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30480 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30490 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
304a0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
304b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65  tiveMethods.xCre
304c0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
304d0 20 20 20 20 20 20 20 20 20 20 78 43 72 65 61 74            xCreat
304e0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
304f0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
30500 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e  ule.xConnect = n
30510 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
30520 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28  ethods.xConnect(
30530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30540 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 29 3b        xConnect);
30550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30560 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30570 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65  .xBestIndex = ne
30580 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
30590 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78  thods.xBestIndex
305a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
305b0 20 20 20 20 20 20 20 78 42 65 73 74 49 6e 64 65         xBestInde
305c0 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
305d0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
305e0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
305f0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
30600 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
30610 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
30620 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69 73              xDis
30630 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  connect);....   
30640 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30650 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
30660 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  oy = new UnsafeN
30670 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
30680 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
30690 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65 73              xDes
306a0 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  troy);....      
306b0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
306c0 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
306d0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
306e0 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f 70  ethods.xOpen(xOp
306f0 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  en);..          
30700 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
30710 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20  le.xClose = new 
30720 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
30730 6f 64 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f 73  ods.xClose(xClos
30740 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
30750 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
30760 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65  ule.xFilter = ne
30770 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
30780 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a  thods.xFilter(..
30790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307a0 20 20 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d      xFilter);...
307b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
307c0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e   nativeModule.xN
307d0 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ext = new Unsafe
307e0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e  NativeMethods.xN
307f0 65 78 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20 20  ext(xNext);..   
30800 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30810 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
30820 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30830 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 78 45  eMethods.xEof(xE
30840 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
30850 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
30860 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e  dule.xColumn = n
30870 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
30880 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d  ethods.xColumn(.
30890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
308a0 20 20 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a       xColumn);..
308b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
308c0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
308d0 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61  RowId = new Unsa
308e0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
308f0 78 52 6f 77 49 64 28 78 52 6f 77 49 64 29 3b 0d  xRowId(xRowId);.
30900 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30910 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
30920 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e  xUpdate = new Un
30930 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30940 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  s.xUpdate(..    
30950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30960 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
30970 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30980 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
30990 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
309a0 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69  iveMethods.xBegi
309b0 6e 28 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20 20  n(xBegin);..    
309c0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
309d0 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d  veModule.xSync =
309e0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
309f0 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 78  eMethods.xSync(x
30a00 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Sync);....      
30a10 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
30a20 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d  Module.xCommit =
30a30 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30a40 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74  eMethods.xCommit
30a50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30a60 20 20 20 20 20 20 20 78 43 6f 6d 6d 69 74 29 3b         xCommit);
30a70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30a80 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30a90 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77  .xRollback = new
30aa0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
30ab0 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d  hods.xRollback(.
30ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30ad0 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29 3b       xRollback);
30ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30af0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30b00 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d  .xFindFunction =
30b10 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30b20 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75  eMethods.xFindFu
30b30 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
30b40 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69               xFi
30b50 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  ndFunction);....
30b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b70 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  nativeModule.xRe
30b80 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  name = new Unsaf
30b90 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
30ba0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
30bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65               xRe
30bc0 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
30bd0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
30be0 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
30bf0 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
30c00 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76  tiveMethods.xSav
30c10 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
30c20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53 61               xSa
30c30 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20  vepoint);....   
30c40 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30c50 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
30c60 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
30c70 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65  ativeMethods.xRe
30c80 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
30c90 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65 6c              xRel
30ca0 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
30cb0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
30cc0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
30cd0 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  To = new UnsafeN
30ce0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
30cf0 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
30d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
30d10 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20  RollbackTo);..  
30d20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
30d30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30d40 6e 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d  n nativeModule;.
30d50 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
30d60 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
30d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
30db0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
30dc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
30dd0 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 63 6f  /// Creates a co
30de0 70 79 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  py of the specif
30df0 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
30e00 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
30e10 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
30e20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20  sqlite3_module" 
30e30 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
30e40 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce,..        ///
30e50 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 20 69   using default i
30e60 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66  mplementations f
30e70 6f 72 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64  or the contained
30e80 20 64 65 6c 65 67 61 74 65 73 20 77 68 65 6e 0d   delegates when.
30e90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63  .        /// nec
30ea0 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  essary...       
30eb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
30ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
30ed0 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
30ee0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
30ef0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 55  The <see cref="U
30f00 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30f10 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
30f20 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  e" /> object..  
30f30 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
30f40 63 65 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20 20  ce to copy...   
30f50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
30f60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
30f70 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
30f80 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
30f90 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
30fa0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
30fb0 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20  ite3_module" /> 
30fc0 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
30fd0 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
30fe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
30ff0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
31000 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
31010 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
31020 65 33 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e 61  e3_module CopyNa
31030 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  tiveModule(..   
31040 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
31050 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
31060 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75  ite3_module modu
31070 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
31080 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
31090 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
310a0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
310b0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65 77  lite3_module new
310c0 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
310d0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
310e0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
310f0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
31100 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
31110 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56 65     newModule.iVe
31120 72 73 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69  rsion = module.i
31130 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20  Version;....    
31140 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
31150 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20  e.xCreate = new 
31160 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
31170 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ods.xCreate(..  
31180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
31190 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 21 3d  odule.xCreate !=
311a0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
311b0 78 43 72 65 61 74 65 20 3a 20 78 43 72 65 61 74  xCreate : xCreat
311c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
311d0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f     newModule.xCo
311e0 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
311f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
31200 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
31210 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
31220 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20 6e  le.xConnect != n
31230 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
31240 6f 6e 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65 63  onnect : xConnec
31250 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
31260 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65     newModule.xBe
31270 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e  stIndex = new Un
31280 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
31290 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  s.xBestIndex(.. 
312a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
312b0 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
312c0 78 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  x != null) ? mod
312d0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3a  ule.xBestIndex :
312e0 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d   xBestIndex);...
312f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
31300 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
31310 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
31320 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69  ativeMethods.xDi
31330 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
31340 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
31350 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 21  le.xDisconnect !
31360 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
31370 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a  .xDisconnect :..
31380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31390 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  xDisconnect);...
313a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
313b0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  Module.xDestroy 
313c0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
313d0 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72  veMethods.xDestr
313e0 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
313f0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 65       (module.xDe
31400 73 74 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20 3f  stroy != null) ?
31410 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79   module.xDestroy
31420 20 3a 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d   : xDestroy);...
31430 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
31440 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
31450 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
31460 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20  ethods.xOpen(.. 
31470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
31480 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d 20  module.xOpen != 
31490 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
314a0 4f 70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a  Open : xOpen);..
314b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
314c0 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d  wModule.xClose =
314d0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
314e0 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28  eMethods.xClose(
314f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31500 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65    (module.xClose
31510 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
31520 6c 65 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c 6f  le.xClose : xClo
31530 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
31540 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46      newModule.xF
31550 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
31560 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
31570 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
31580 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
31590 65 2e 78 46 69 6c 74 65 72 20 21 3d 20 6e 75 6c  e.xFilter != nul
315a0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6c  l) ? module.xFil
315b0 74 65 72 20 3a 20 78 46 69 6c 74 65 72 29 3b 0d  ter : xFilter);.
315c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
315d0 65 77 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d  ewModule.xNext =
315e0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
315f0 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d  eMethods.xNext(.
31600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31610 20 28 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 21   (module.xNext !
31620 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
31630 2e 78 4e 65 78 74 20 3a 20 78 4e 65 78 74 29 3b  .xNext : xNext);
31640 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31650 6e 65 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  newModule.xEof =
31660 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
31670 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d 0a  eMethods.xEof(..
31680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31690 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d 20  (module.xEof != 
316a0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
316b0 45 6f 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a  Eof : xEof);....
316c0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
316d0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
316e0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
316f0 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
31700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31710 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d    (module.xColum
31720 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  n != null) ? mod
31730 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78 43  ule.xColumn : xC
31740 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  olumn);....     
31750 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
31760 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e  .xRowId = new Un
31770 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
31780 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  s.xRowId(..     
31790 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
317a0 6c 65 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75 6c  le.xRowId != nul
317b0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 77  l) ? module.xRow
317c0 49 64 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a 0d  Id : xRowId);...
317d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
317e0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
317f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
31800 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
31810 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31820 20 20 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64 61     (module.xUpda
31830 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  te != null) ? mo
31840 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3a 20 78  dule.xUpdate : x
31850 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20  Update);....    
31860 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
31870 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55  e.xBegin = new U
31880 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
31890 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  ds.xBegin(..    
318a0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
318b0 75 6c 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e 75  ule.xBegin != nu
318c0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65  ll) ? module.xBe
318d0 67 69 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d 0a  gin : xBegin);..
318e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
318f0 77 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20  wModule.xSync = 
31900 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
31910 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a  Methods.xSync(..
31920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31930 28 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21 3d  (module.xSync !=
31940 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
31950 78 53 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b 0d  xSync : xSync);.
31960 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
31970 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  ewModule.xCommit
31980 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
31990 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d  iveMethods.xComm
319a0 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
319b0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f       (module.xCo
319c0 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  mmit != null) ? 
319d0 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3a  module.xCommit :
319e0 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20   xCommit);....  
319f0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
31a00 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20  ule.xRollback = 
31a10 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
31a20 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63  Methods.xRollbac
31a30 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
31a40 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c      (module.xRol
31a50 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 3f  lback != null) ?
31a60 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
31a70 6b 20 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d  k : xRollback);.
31a80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
31a90 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ewModule.xFindFu
31aa0 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
31ab0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31ac0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
31ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31ae0 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75   (module.xFindFu
31af0 6e 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20  nction != null) 
31b00 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ? module.xFindFu
31b10 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20 20  nction :..      
31b20 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46            xFindF
31b30 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  unction);....   
31b40 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
31b50 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77  le.xRename = new
31b60 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
31b70 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20  hods.xRename(.. 
31b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
31b90 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 21  module.xRename !
31ba0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
31bb0 2e 78 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e 61  .xRename : xRena
31bc0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
31bd0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53      newModule.xS
31be0 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
31bf0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
31c00 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
31c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c20 28 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  (module.xSavepoi
31c30 6e 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  nt != null) ? mo
31c40 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
31c50 3a 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  : xSavepoint);..
31c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
31c70 77 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  wModule.xRelease
31c80 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
31c90 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65  iveMethods.xRele
31ca0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
31cb0 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52        (module.xR
31cc0 65 6c 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29 20  elease != null) 
31cd0 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  ? module.xReleas
31ce0 65 20 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a  e : xRelease);..
31cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
31d00 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  wModule.xRollbac
31d10 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
31d20 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
31d30 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
31d40 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
31d50 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  ule.xRollbackTo 
31d60 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
31d70 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a 0d  e.xRollbackTo :.
31d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31d90 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a   xRollbackTo);..
31da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
31db0 74 75 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b 0d  turn newModule;.
31dc0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
31dd0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
31de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
31e20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
31e30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
31e40 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66  /// Calls one of
31e50 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
31e60 6c 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  le initializatio
31e70 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  n methods...    
31e80 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
31e90 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
31ea0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72 65  <param name="cre
31eb0 61 74 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ate">..        /
31ec0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63  // Non-zero to c
31ed0 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72 65  all the <see cre
31ee0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
31ef0 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
31f00 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
31f10 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69 73  method; otherwis
31f20 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  e, the <see cref
31f30 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
31f40 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
31f50 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
31f60 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63  method will be c
31f70 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  alled...        
31f80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
31f90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31fa0 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20   name="pDb">..  
31fb0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
31fc0 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f  tive database co
31fd0 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e  nnection handle.
31fe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
31ff0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
32000 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
32010 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20  "pAux">..       
32020 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
32030 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  l native pointer
32040 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73 20   value that was 
32050 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d  provided to the.
32060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
32070 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
32080 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72  le(), sqlite3_cr
32090 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29  eate_module_v2()
320a0 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
320b0 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
320c0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
320d0 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  e() functions...
320e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
320f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32100 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
32110 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgc">..        /
32120 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
32130 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20   arguments from 
32140 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
32150 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
32160 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
32170 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32180 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32190 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
321a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
321b0 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75  y of string argu
321c0 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43  ments from the C
321d0 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
321e0 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  BLE..        ///
321f0 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
32200 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32210 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32220 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
32230 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
32240 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
32250 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
32260 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
32270 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e  o point to the n
32280 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ewly..        //
32290 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69 76 65  / created native
322a0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
322b0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
322c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
322d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
322e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
322f0 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  "pError">..     
32300 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
32310 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ure, this parame
32320 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
32330 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
32340 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20   the error..    
32350 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c      /// message,
32360 20 77 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c   with the underl
32370 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69  ying memory havi
32380 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64  ng been obtained
32390 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
323a0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d     /// sqlite3_m
323b0 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e  alloc() function
323c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
323d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
323e0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
323f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
32400 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
32410 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
32420 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
32430 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
32440 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
32450 6f 64 65 20 43 72 65 61 74 65 4f 72 43 6f 6e 6e  ode CreateOrConn
32460 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
32470 20 20 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d 0a    bool create,..
32480 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
32490 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
324a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
324b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
324c0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
324d0 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
324e0 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
324f0 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
32500 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
32510 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
32520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
32530 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
32540 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
32550 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32560 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
32570 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51  ng fileName = SQ
32580 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e  LiteString.Strin
32590 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
325a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
325b0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
325c0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
325d0 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44  3_db_filename(pD
325e0 62 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  b, IntPtr.Zero))
325f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32600 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
32610 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
32620 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51  nection = new SQ
32630 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d  LiteConnection(.
32640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32650 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 66 69           pDb, fi
32660 6c 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d  leName, false)).
32670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32680 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32690 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
326a0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
326b0 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
326c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
326d0 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c  ring error = nul
326e0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
326f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 63            if ((c
32700 72 65 61 74 65 20 26 26 20 43 72 65 61 74 65 28  reate && Create(
32710 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78  connection, pAux
32720 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
32730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
32740 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
32750 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53  ngArrayFromUtf8S
32760 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72 67  izeAndIntPtr(arg
32770 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
32780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32790 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c 65  argv), ref table
327a0 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20  , ref error) == 
327b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
327c0 4f 6b 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  Ok) ||..        
327d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327e0 28 21 63 72 65 61 74 65 20 26 26 20 43 6f 6e 6e  (!create && Conn
327f0 65 63 74 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ect(connection, 
32800 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
32810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32820 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e     SQLiteString.
32830 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55  StringArrayFromU
32840 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72  tf8SizeAndIntPtr
32850 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20  (argc,..        
32860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32870 20 20 20 20 61 72 67 76 29 2c 20 72 65 66 20 74      argv), ref t
32880 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f 72 29  able, ref error)
32890 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
328a0 6f 64 65 2e 4f 6b 29 29 0d 0a 20 20 20 20 20 20  ode.Ok))..      
328b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
328c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
328d0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
328e0 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
328f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32900 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32920 20 20 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c      pVtab = Tabl
32930 65 54 6f 49 6e 74 50 74 72 28 74 61 62 6c 65 29  eToIntPtr(table)
32940 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
32950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
32960 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
32970 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
32980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32990 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
329a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
329b0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
329c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
329d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
329e0 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
329f0 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
32a00 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
32a10 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
32a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a30 20 20 20 20 20 20 20 20 22 6e 6f 20 74 61 62 6c          "no tabl
32a40 65 20 77 61 73 20 63 72 65 61 74 65 64 22 29 3b  e was created");
32a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32a60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
32a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32a90 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
32aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ab0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
32ad0 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
32ae0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
32af0 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d  mString(error);.
32b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32b20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
32b30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
32b40 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
32b50 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54  eption e) /* NOT
32b60 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c  E: Must catch AL
32b70 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  L. */..         
32b80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32b90 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53        pError = S
32ba0 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
32bb0 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
32bc0 28 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d  (e.ToString());.
32bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
32be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
32bf0 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
32c00 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
32c10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
32c20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
32c70 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
32c80 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
32c90 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65  Calls one of the
32ca0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66   virtual table f
32cb0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68  inalization meth
32cc0 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
32cd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
32ce0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32cf0 20 6e 61 6d 65 3d 22 64 65 73 74 72 6f 79 22 3e   name="destroy">
32d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
32d10 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74  n-zero to call t
32d20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
32d30 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
32d40 6c 65 2e 44 65 73 74 72 6f 79 22 20 2f 3e 0d 0a  le.Destroy" />..
32d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
32d60 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  od; otherwise, t
32d70 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
32d80 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
32d90 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
32da0 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
32db0 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 0d 0a 20  ethod will be.. 
32dc0 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65         /// calle
32dd0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
32de0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
32df0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
32e00 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
32e10 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
32e20 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
32e30 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
32e40 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
32e50 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
32e60 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
32e70 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
32e80 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
32e90 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
32ea0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
32eb0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
32ec0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
32ed0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
32ee0 6f 64 65 20 44 65 73 74 72 6f 79 4f 72 44 69 73  ode DestroyOrDis
32ef0 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
32f00 20 20 20 20 20 20 62 6f 6f 6c 20 64 65 73 74 72        bool destr
32f10 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
32f20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
32f30 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32f40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32f50 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
32f60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32f70 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
32f80 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
32f90 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  e = TableFromInt
32fa0 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  Ptr(pVtab);.... 
32fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
32fc0 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
32fd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32fe0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32ff0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 64            if ((d
33000 65 73 74 72 6f 79 20 26 26 20 28 44 65 73 74 72  estroy && (Destr
33010 6f 79 28 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c  oy(table) == SQL
33020 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
33030 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
33040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 21                (!
33050 64 65 73 74 72 6f 79 20 26 26 20 28 44 69 73 63  destroy && (Disc
33060 6f 6e 6e 65 63 74 28 74 61 62 6c 65 29 20 3d 3d  onnect(table) ==
33070 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
33080 2e 4f 6b 29 29 29 0d 0a 20 20 20 20 20 20 20 20  .Ok)))..        
33090 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
330a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330b0 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
330c0 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
330d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330e0 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e 52          tables.R
330f0 65 6d 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a 0d  emove(pVtab);...
33100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33110 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
33120 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
33130 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok;..           
33140 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
33150 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
33160 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33170 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
33180 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
33190 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
331a0 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
331b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
331c0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
331d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
331e0 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
331f0 6f 69 6e 74 2c 20 74 68 65 72 65 20 69 73 20 6e  oint, there is n
33200 6f 20 77 61 79 20 74 6f 20 72 65 70 6f 72 74 20  o way to report 
33210 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  the error..     
33220 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
33230 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62 61      condition ba
33240 63 6b 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72  ck to the caller
33250 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 75 73 65  ; therefore, use
33260 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
33270 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
33280 6f 67 67 69 6e 67 20 66 61 63 69 6c 69 74 79 20  ogging facility 
33290 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20  instead...      
332a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
332b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
332c0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
332d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
332e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4c 6f            if (Lo
332f0 67 45 78 63 65 70 74 69 6f 6e 73 4e 6f 54 68 72  gExceptionsNoThr
33300 6f 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow)..           
33310 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
33320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33330 20 20 20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d      /* throw */.
33340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33350 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
33360 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51  og.LogMessage(SQ
33370 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45  LiteBase.COR_E_E
33380 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20  XCEPTION,..     
33390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
333a0 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
333b0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
333c0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
333d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
333e0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
333f0 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
33400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33410 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
33420 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 45 78 63  ativeMethods.Exc
33430 65 70 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72  eptionMessageFor
33440 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
33450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33460 20 20 64 65 73 74 72 6f 79 20 3f 20 22 78 44 65    destroy ? "xDe
33470 73 74 72 6f 79 22 20 3a 20 22 78 44 69 73 63 6f  stroy" : "xDisco
33480 6e 6e 65 63 74 22 2c 20 65 29 29 3b 0d 0a 20 20  nnect", e));..  
33490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
334a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
334b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
334c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
334d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
334e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
334f0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
33500 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
33510 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
33520 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
33530 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
33540 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
33550 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65              Free
33560 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20  Table(pVtab);.. 
33570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
33580 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33590 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
335a0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
335b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
335c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33600 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33610 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69     #region Stati
33620 63 20 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67  c Error Handling
33630 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
33640 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
33650 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33660 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72  /// Arranges for
33670 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65   the specified e
33680 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20  rror message to 
33690 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74  be placed into t
336a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
336b0 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66  zErrMsg field of
336c0 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20   a sqlite3_vtab 
336d0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
336e0 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a  e, freeing the..
336f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73          /// exis
33700 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61  ting error messa
33710 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  ge, if any...   
33720 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
33730 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33740 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
33750 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  dule">..        
33760 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
33770 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
33780 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
33790 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d  nce to be used..
337a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
337b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
337c0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
337d0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
337e0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
337f0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
33800 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
33810 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
33820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
33830 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
33840 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
33850 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20  ogErrors">..    
33860 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
33870 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d   if this error m
33880 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c  essage should al
33890 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  so be logged usi
338a0 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
338b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
338c0 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
338d0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
338e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
338f0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
33900 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e  me="logException
33910 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
33920 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75   Non-zero if cau
33930 67 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73  ght exceptions s
33940 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20  hould be logged 
33950 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
33960 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
33970 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
33980 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
33990 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
339a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
339b0 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
339c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
339d0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
339e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
339f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
33a00 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
33a10 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
33a20 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
33a30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
33a40 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
33a50 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
33a60 62 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72  bool SetTableErr
33a70 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
33a80 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
33a90 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  dule,..         
33aa0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
33ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
33ac0 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ol logErrors,.. 
33ad0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
33ae0 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a  logExceptions,..
33af0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
33b00 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
33b10 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
33b20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33b30 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
33b40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33b50 20 20 20 20 69 66 20 28 6c 6f 67 45 72 72 6f 72      if (logError
33b60 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
33b70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33b80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
33b90 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28  eLog.LogMessage(
33ba0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
33bb0 45 72 72 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  Error,..        
33bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33bd0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
33be0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
33bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33c00 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
33c10 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
33c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33c30 20 20 20 20 20 20 20 20 20 20 22 56 69 72 74 75            "Virtu
33c40 61 6c 20 74 61 62 6c 65 20 65 72 72 6f 72 3a 20  al table error: 
33c50 7b 30 7d 22 2c 20 65 72 72 6f 72 29 29 3b 20 2f  {0}", error)); /
33c60 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
33c70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
33c80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33c90 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
33ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
33cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33cc0 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
33cd0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
33ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
33cf0 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73  l success = fals
33d00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
33d10 49 6e 74 50 74 72 20 70 4e 65 77 45 72 72 6f 72  IntPtr pNewError
33d20 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
33d30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
33d40 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
33d50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33d60 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
33d70 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
33d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d90 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
33da0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33db0 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20     int offset = 
33dc0 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
33dd0 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
33de0 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
33df0 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
33e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e10 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
33e20 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
33e30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33e40 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
33e50 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
33e60 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
33e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e80 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
33e90 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
33ea0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33eb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 6c        IntPtr pOl
33ec0 64 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 4d  dError = SQLiteM
33ed0 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
33ee0 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 29  r(pVtab, offset)
33ef0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
33f00 20 20 20 20 20 69 66 20 28 70 4f 6c 64 45 72 72       if (pOldErr
33f10 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or != IntPtr.Zer
33f20 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
33f30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33f40 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
33f50 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 6c  eMemory.Free(pOl
33f60 64 45 72 72 6f 72 29 3b 20 70 4f 6c 64 45 72 72  dError); pOldErr
33f70 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  or = IntPtr.Zero
33f80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
33f90 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
33fa0 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
33fb0 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20  (pVtab, offset, 
33fc0 70 4f 6c 64 45 72 72 6f 72 29 3b 0d 0a 20 20 20  pOldError);..   
33fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
33fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33ff0 20 20 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 6e    if (error == n
34000 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
34010 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
34020 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
34030 20 20 20 20 20 20 20 20 20 20 70 4e 65 77 45 72            pNewEr
34040 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
34050 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
34060 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d  mString(error);.
34070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34080 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
34090 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61 62  riteIntPtr(pVtab
340a0 2c 20 6f 66 66 73 65 74 2c 20 70 4e 65 77 45 72  , offset, pNewEr
340b0 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
340c0 20 20 20 20 20 20 20 73 75 63 63 65 73 73 20 3d         success =
340d0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
340e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
340f0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
34100 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20  ion e) /* NOTE: 
34110 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20  Must catch ALL. 
34120 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
34130 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34140 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
34150 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
34160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
34170 66 20 28 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  f (logExceptions
34180 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
34190 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
341a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
341b0 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d    SQLiteLog.LogM
341c0 65 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73  essage(SQLiteBas
341d0 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f  e.COR_E_EXCEPTIO
341e0 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  N,..            
341f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34200 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
34210 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
34220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34230 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
34240 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
34250 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
34260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34270 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
34280 74 68 6f 64 73 2e 45 78 63 65 70 74 69 6f 6e 4d  thods.ExceptionM
34290 65 73 73 61 67 65 46 6f 72 6d 61 74 2c 0d 0a 20  essageFormat,.. 
342a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
342b0 20 20 20 20 20 20 20 20 20 20 20 22 53 65 74 54             "SetT
342c0 61 62 6c 65 45 72 72 6f 72 22 2c 20 65 29 29 3b  ableError", e));
342d0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
342e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
342f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
34300 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34310 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
34320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
34330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34340 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
34350 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
34360 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
34370 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34380 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
34390 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
343a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
343b0 21 73 75 63 63 65 73 73 20 26 26 20 28 70 4e 65  !success && (pNe
343c0 77 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72  wError != IntPtr
343d0 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20  .Zero))..       
343e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
343f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34400 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
34410 65 28 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20  e(pNewError);.. 
34420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34430 20 20 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49     pNewError = I
34440 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
34450 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
34460 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
34470 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
34480 75 72 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20 20  urn success;..  
34490 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
344a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
344b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
344f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
34500 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
34510 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
34520 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
34530 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
34540 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
34550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
34560 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
34570 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
34580 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
34590 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
345a0 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
345b0 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
345c0 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
345d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
345e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
345f0 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
34600 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
34610 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
34620 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
34630 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
34640 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
34650 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34660 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
34670 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
34680 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
34690 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
346a0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
346b0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
346c0 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d  nstance used to.
346d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f  .        /// loo
346e0 6b 75 70 20 74 68 65 20 6e 61 74 69 76 65 20 70  kup the native p
346f0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34700 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
34710 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
34720 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
34730 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
34740 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f   <param name="lo
34750 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20  gErrors">..     
34760 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
34770 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65  if this error me
34780 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73  ssage should als
34790 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  o be logged usin
347a0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
347b0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
347c0 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
347d0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
347e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
347f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
34800 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  e="logExceptions
34810 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
34820 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67  Non-zero if caug
34830 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68  ht exceptions sh
34840 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75  ould be logged u
34850 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
34860 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
34870 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63  "SQLiteLog" /> c
34880 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
34890 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
348a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
348b0 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
348c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65         /// The e
348d0 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
348e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
348f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
34900 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
34910 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
34920 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
34930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
34940 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
34950 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
34960 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f  ool SetTableErro
34970 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
34980 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
34990 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ule,..          
349a0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
349b0 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20  able table,..   
349c0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
349d0 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20  gErrors,..      
349e0 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78        bool logEx
349f0 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20  ceptions,..     
34a00 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72         string er
34a10 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
34a20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
34a30 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
34a40 61 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  able == null).. 
34a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
34a60 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
34a70 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
34a80 74 72 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65  tr pVtab = table
34a90 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a  .NativeHandle;..
34aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
34ab0 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74   (pVtab == IntPt
34ac0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
34ad0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34ae0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
34af0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74        return Set
34b00 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20  TableError(..   
34b10 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
34b20 75 6c 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45  ule, pVtab, logE
34b30 72 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74  rrors, logExcept
34b40 69 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20  ions, error);.. 
34b50 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
34b60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
34b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
34bb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
34bc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
34bd0 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74  / Arranges for t
34be0 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
34bf0 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65  or message to be
34c00 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65   placed into the
34c10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45  ..        /// zE
34c20 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61  rrMsg field of a
34c30 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
34c40 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c  rived structure,
34c50 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20   freeing the..  
34c60 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69        /// existi
34c70 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ng error message
34c80 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
34c90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
34ca0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
34cb0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
34cc0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
34cd0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
34ce0 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
34cf0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
34d00 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20  e to be used... 
34d10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
34d20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
34d30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
34d40 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
34d50 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
34d60 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
34d70 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
34d80 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
34d90 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
34da0 2f 20 75 73 65 64 20 74 6f 20 67 65 74 20 74 68  / used to get th
34db0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
34dc0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
34dd0 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
34de0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
34df0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
34e00 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
34e10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
34e20 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e  ame="logErrors">
34e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
34e40 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65  n-zero if this e
34e50 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f  rror message sho
34e60 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67  uld also be logg
34e70 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
34e80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
34e90 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
34ea0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
34eb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
34ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
34ed0 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63  ram name="logExc
34ee0 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20  eptions">..     
34ef0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
34f00 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74  if caught except
34f10 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  ions should be l
34f20 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
34f30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
34f40 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
34f50 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
34f60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34f70 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
34f80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
34f90 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
34fa0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
34fb0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
34fc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
34fd0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
34fe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
34ff0 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
35000 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
35010 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
35020 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
35030 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75  tatic bool SetCu
35040 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20  rsorError(..    
35050 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
35060 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20  dule module,..  
35070 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
35080 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
35090 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
350a0 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
350b0 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65      bool logExce
350c0 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20  ptions,..       
350d0 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f       string erro
350e0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
350f0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
35100 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 75           if (pCu
35110 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  rsor == IntPtr.Z
35120 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
35130 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
35140 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
35150 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20     IntPtr pVtab 
35160 3d 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f  = TableFromCurso
35170 72 28 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f  r(module, pCurso
35180 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
35190 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
351a0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
351b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
351c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
351d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
351e0 6e 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28  n SetTableError(
351f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35200 20 20 6d 6f 64 75 6c 65 2c 20 70 56 74 61 62 2c    module, pVtab,
35210 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45   logErrors, logE
35220 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72  xceptions, error
35230 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
35240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35290 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
352a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
352b0 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20     /// Arranges 
352c0 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
352d0 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  d error message 
352e0 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74  to be placed int
352f0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
35300 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64  // zErrMsg field
35310 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74   of a sqlite3_vt
35320 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
35330 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68  ture, freeing th
35340 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  e..        /// e
35350 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65  xisting error me
35360 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a  ssage, if any...
35370 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
35380 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
35390 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
353a0 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
353b0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
353c0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
353d0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
353e0 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65  stance to be use
353f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
35400 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
35410 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
35420 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
35430 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
35440 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
35450 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
35460 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
35470 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a 20 20  ance used to..  
35480 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70        /// lookup
35490 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
354a0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
354b0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
354c0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
354d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
354e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
354f0 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72  aram name="logEr
35500 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  rors">..        
35510 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
35520 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61  this error messa
35530 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62  ge should also b
35540 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74  e logged using t
35550 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
35560 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
35570 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d  eLog" /> class..
35580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
35590 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
355a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
355b0 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d  logExceptions">.
355c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
355d0 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74 20  -zero if caught 
355e0 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c  exceptions shoul
355f0 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  d be logged usin
35600 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
35610 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
35620 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
35630 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
35640 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
35650 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
35660 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
35670 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f      /// The erro
35680 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  r message...    
35690 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
356a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
356b0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
356c0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
356d0 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
356e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
356f0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
35700 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
35710 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28   SetCursorError(
35720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
35730 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
35740 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
35750 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
35760 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c  leCursor cursor,
35770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
35780 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ol logErrors,.. 
35790 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
357a0 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a  logExceptions,..
357b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
357c0 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
357d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
357e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
357f0 69 66 20 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75  if (cursor == nu
35800 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
35810 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
35820 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
35830 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
35840 20 3d 20 63 75 72 73 6f 72 2e 4e 61 74 69 76 65   = cursor.Native
35850 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Handle;....     
35860 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73         if (pCurs
35870 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or == IntPtr.Zer
35880 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
35890 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
358a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
358b0 20 72 65 74 75 72 6e 20 53 65 74 43 75 72 73 6f   return SetCurso
358c0 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  rError(..       
358d0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c           module,
358e0 20 70 43 75 72 73 6f 72 2c 20 6c 6f 67 45 72 72   pCursor, logErr
358f0 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f  ors, logExceptio
35900 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ns, error);..   
35910 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
35920 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
35930 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
35940 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
35950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35990 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
359a0 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 4d  gion Protected M
359b0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
359c0 23 72 65 67 69 6f 6e 20 4d 6f 64 75 6c 65 20 48  #region Module H
359d0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
359e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
359f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35a00 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72  / Gets and retur
35a10 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ns the <see cref
35a20 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
35a30 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
35a40 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ace..        ///
35a50 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
35a60 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20  to be used when 
35a70 63 72 65 61 74 69 6e 67 20 74 68 65 20 6e 61 74  creating the nat
35a80 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ive sqlite3_modu
35a90 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
35aa0 73 74 72 75 63 74 75 72 65 2e 20 20 44 65 72 69  structure.  Deri
35ab0 76 65 64 20 63 6c 61 73 73 65 73 20 6d 61 79 20  ved classes may 
35ac0 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65  override this me
35ad0 74 68 6f 64 20 74 6f 20 73 75 70 70 6c 79 20 61  thod to supply a
35ae0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  n..        /// a
35af0 6c 74 65 72 6e 61 74 65 20 69 6d 70 6c 65 6d 65  lternate impleme
35b00 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  ntation for the 
35b10 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
35b20 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
35b30 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
35b40 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20  interface...    
35b50 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
35b60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
35b70 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
35b80 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
35b90 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
35ba0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
35bb0 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
35bc0 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20 20  tation to..     
35bd0 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 77     /// be used w
35be0 68 65 6e 20 70 6f 70 75 6c 61 74 69 6e 67 20 74  hen populating t
35bf0 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
35c00 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
35c10 72 65 2e 20 20 49 66 0d 0a 20 20 20 20 20 20 20  re.  If..       
35c20 20 2f 2f 2f 20 74 68 65 20 72 65 74 75 72 6e 65   /// the returne
35c30 64 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c  d value is null,
35c40 20 74 68 65 20 70 72 69 76 61 74 65 20 6d 65 74   the private met
35c50 68 6f 64 73 20 70 72 6f 76 69 64 65 64 20 62 79  hods provided by
35c60 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
35c70 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
35c80 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c  iteModule" /> cl
35c90 61 73 73 20 61 6e 64 20 72 65 6c 61 74 69 6e 67  ass and relating
35ca0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
35cb0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
35cc0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
35cd0 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
35ce0 65 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20  e  will be used 
35cf0 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
35d00 63 72 65 61 74 65 20 74 68 65 20 6e 65 63 65 73  create the neces
35d10 73 61 72 79 20 64 65 6c 65 67 61 74 65 73 2e 0d  sary delegates..
35d20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
35d30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
35d40 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
35d50 61 6c 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  al ISQLiteNative
35d60 4d 6f 64 75 6c 65 20 47 65 74 4e 61 74 69 76 65  Module GetNative
35d70 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20  ModuleImpl()..  
35d80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35d90 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
35da0 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55 73 65 20 74  ; /* NOTE: Use t
35db0 68 65 20 62 75 69 6c 74 2d 69 6e 20 64 65 66 61  he built-in defa
35dc0 75 6c 74 20 64 65 6c 65 67 61 74 65 73 2e 20 2a  ult delegates. *
35dd0 2f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  /..        }....
35de0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35e30 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35e40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35e50 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e    /// Creates an
35e60 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
35e70 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
35e80 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
35e90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
35ea0 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
35eb0 74 61 74 69 6f 6e 20 63 6f 72 72 65 73 70 6f 6e  tation correspon
35ec0 64 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72  ding to the curr
35ed0 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ent..        ///
35ee0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
35ef0 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
35f00 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
35f10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
35f20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
35f30 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
35f40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
35f50 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
35f60 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
35f70 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65   interface imple
35f80 6d 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 20  mentation..     
35f90 20 20 20 2f 2f 2f 20 63 6f 72 72 65 73 70 6f 6e     /// correspon
35fa0 64 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72  ding to the curr
35fb0 65 6e 74 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ent <see cref="S
35fc0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
35fd0 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
35fe0 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
35ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
36000 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
36010 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
36020 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
36030 64 75 6c 65 20 43 72 65 61 74 65 4e 61 74 69 76  dule CreateNativ
36040 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20  eModuleImpl().. 
36050 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36060 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
36070 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
36080 75 6c 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ule(this);..    
36090 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
360a0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
360b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
360c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
36100 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
36110 4e 61 74 69 76 65 20 54 61 62 6c 65 20 48 65 6c  Native Table Hel
36120 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
36130 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
36140 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
36150 41 6c 6c 6f 63 61 74 65 73 20 61 20 6e 61 74 69  Allocates a nati
36160 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
36170 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
36180 65 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 0d  e and returns a.
36190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74  .        /// nat
361a0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69  ive pointer to i
361b0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
361c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
361d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
361e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
361f0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
36200 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  to a native sqli
36210 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
36220 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
36230 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
36240 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
36250 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
36260 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 54 61  ntPtr AllocateTa
36270 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ble()..        {
36280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
36290 74 20 73 69 7a 65 20 3d 20 4d 61 72 73 68 61 6c  t size = Marshal
362a0 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
362b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
362c0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
362d0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 74 61  hods.sqlite3_vta
362e0 62 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  b));....        
362f0 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
36300 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65  eMemory.Allocate
36310 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20  (size);..       
36320 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
36330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36370 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36380 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
36390 20 20 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f          /// Zero
363a0 73 20 6f 75 74 20 74 68 65 20 66 69 65 6c 64 73  s out the fields
363b0 20 6f 66 20 61 20 6e 61 74 69 76 65 20 73 71 6c   of a native sql
363c0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
363d0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
363e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
363f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
36400 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
36410 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
36420 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
36430 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61  ointer to the na
36440 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
36450 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
36460 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ure to..        
36470 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  /// zero...     
36480 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
36490 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
364a0 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
364b0 5a 65 72 6f 54 61 62 6c 65 28 0d 0a 20 20 20 20  ZeroTable(..    
364c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
364d0 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
364e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
364f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
36500 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
36510 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
36520 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
36530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
36540 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d  t offset = 0;...
36550 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
36560 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
36570 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66  IntPtr(pVtab, of
36580 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72  fset, IntPtr.Zer
36590 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
365a0 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
365b0 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
365c0 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
365d0 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
365e0 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69   IntPtr.Size, si
365f0 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
36600 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36610 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
36620 74 33 32 28 70 56 74 61 62 2c 20 6f 66 66 73 65  t32(pVtab, offse
36630 74 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  t, 0);....      
36640 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
36650 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
36660 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
36670 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
36680 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
36690 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
366a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
366b0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
366c0 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f  eIntPtr(pVtab, o
366d0 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65  ffset, IntPtr.Ze
366e0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ro);..        }.
366f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
36700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36740 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
36750 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
36760 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61       /// Frees a
36770 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
36780 76 74 61 62 20 73 74 72 75 63 74 75 72 65 20 75  vtab structure u
36790 73 69 6e 67 20 74 68 65 20 70 72 6f 76 69 64 65  sing the provide
367a0 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  d native..      
367b0 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74 6f    /// pointer to
367c0 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   it...        //
367d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
367e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
367f0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
36800 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61          /// A na
36810 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
36820 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  a native sqlite3
36830 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
36840 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
36850 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
36860 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
36870 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 46  d virtual void F
36880 72 65 65 54 61 62 6c 65 28 0d 0a 20 20 20 20 20  reeTable(..     
36890 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
368a0 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
368b0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
368c0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
368d0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20  bleError(pVtab, 
368e0 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
368f0 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
36900 2e 46 72 65 65 28 70 56 74 61 62 29 3b 0d 0a 20  .Free(pVtab);.. 
36910 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
36920 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
36930 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
36940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
36980 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
36990 6f 6e 20 4e 61 74 69 76 65 20 43 75 72 73 6f 72  on Native Cursor
369a0 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
369b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
369c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
369d0 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 20  /// Allocates a 
369e0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
369f0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
36a00 65 64 20 73 74 72 75 63 74 75 72 65 20 61 6e 64  ed structure and
36a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65  ..        /// re
36a20 74 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70  turns a native p
36a30 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20  ointer to it... 
36a40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
36a50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
36a60 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
36a70 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69        /// A nati
36a80 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
36a90 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
36aa0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
36ab0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
36ac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
36ad0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
36ae0 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
36af0 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65   IntPtr Allocate
36b00 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20  Cursor()..      
36b10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36b20 20 69 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72 73   int size = Mars
36b30 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
36b40 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
36b50 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
36b60 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
36b70 76 74 61 62 5f 63 75 72 73 6f 72 29 29 3b 0d 0a  vtab_cursor));..
36b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
36b90 74 75 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72  turn SQLiteMemor
36ba0 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29  y.Allocate(size)
36bb0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
36bc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
36bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
36c10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36c20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
36c30 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e 61    /// Frees a na
36c40 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
36c50 62 5f 63 75 72 73 6f 72 20 73 74 72 75 63 74 75  b_cursor structu
36c60 72 65 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f  re using the pro
36c70 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  vided..        /
36c80 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  // native pointe
36c90 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20  r to it...      
36ca0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
36cb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
36cc0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
36cd0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
36ce0 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  / A native point
36cf0 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73  er to a native s
36d00 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
36d10 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
36d20 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
36d30 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
36d40 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
36d50 69 72 74 75 61 6c 20 76 6f 69 64 20 46 72 65 65  irtual void Free
36d60 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
36d70 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
36d80 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
36d90 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
36da0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36db0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 75  eMemory.Free(pCu
36dc0 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
36dd0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
36de0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
36df0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
36e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
36e40 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74      #region Stat
36e50 69 63 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20  ic Table Lookup 
36e60 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
36e70 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
36e80 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64          /// Read
36e90 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
36ea0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
36eb0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
36ec0 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
36ed0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
36ee0 75 72 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ure based on the
36ef0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
36f00 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
36f10 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
36f20 20 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20      /// derived 
36f30 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
36f40 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
36f50 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
36f60 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
36f70 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ule">..        /
36f80 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
36f90 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
36fa0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
36fb0 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a  ce to be used...
36fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
36fd0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
36fe0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
36ff0 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
37000 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
37010 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
37020 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
37030 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
37040 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f  cture..        /
37050 2f 2f 20 66 72 6f 6d 20 77 68 69 63 68 20 74 6f  // from which to
37060 20 72 65 61 64 20 74 68 65 20 6e 61 74 69 76 65   read the native
37070 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
37080 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
37090 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
370a0 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
370b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
370c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
370d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
370e0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
370f0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
37100 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
37110 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
37120 2d 4f 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f 2f  -OR-..        //
37130 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
37140 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20  Ptr.Zero" /> if 
37150 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
37160 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
37170 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
37180 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
37190 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  e static IntPtr 
371a0 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28  TableFromCursor(
371b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
371c0 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
371d0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
371e0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
371f0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
37200 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37210 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f        if (pCurso
37220 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r == IntPtr.Zero
37230 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
37240 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
37250 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
37260 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
37270 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
37280 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20  pCursor);..     
37290 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
372a0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
372b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
372c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
37300 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54         #region T
37310 61 62 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65 74 68  able Lookup Meth
37320 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
37330 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
37340 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e      /// Reads an
37350 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61  d returns the na
37360 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
37370 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
37380 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
37390 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
373a0 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74  based on the nat
373b0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
373c0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
373d0 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cursor..        
373e0 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74 72 75  /// derived stru
373f0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
37400 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
37410 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
37420 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
37430 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37440 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
37450 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
37460 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
37470 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 0d  rived structure.
37480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f  .        /// fro
37490 6d 20 77 68 69 63 68 20 74 6f 20 72 65 61 64 20  m which to read 
374a0 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  the native point
374b0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
374c0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a  3_vtab derived..
374d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
374e0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
374f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
37500 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
37510 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
37520 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
37530 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
37540 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
37550 73 74 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a  structure -OR-..
37560 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
37570 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
37580 72 6f 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e  ro" /> if it can
37590 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
375a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
375b0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
375c0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
375d0 72 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62  rtual IntPtr Tab
375e0 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a 20  leFromCursor(.. 
375f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
37600 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
37610 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
37620 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
37630 20 72 65 74 75 72 6e 20 54 61 62 6c 65 46 72 6f   return TableFro
37640 6d 43 75 72 73 6f 72 28 74 68 69 73 2c 20 70 43  mCursor(this, pC
37650 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
37660 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
37670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
376c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
376d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b          /// Look
376e0 73 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73  s up and returns
376f0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
37700 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
37710 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
37720 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
37730 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  nce based on the
37740 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
37750 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
37760 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
37770 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
37780 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
37790 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
377a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
377b0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
377c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
377d0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
377e0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
377f0 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
37800 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
37810 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
37820 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
37830 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
37840 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
37850 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
37860 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
37870 61 6e 63 65 20 6f 72 20 6e 75 6c 6c 20 69 66 0d  ance or null if.
37880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
37890 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f   corresponding o
378a0 6e 65 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75  ne cannot be fou
378b0 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nd...        ///
378c0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
378d0 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
378e0 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72  irtual SQLiteVir
378f0 74 75 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 46  tualTable TableF
37900 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  romIntPtr(..    
37910 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
37920 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
37930 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
37940 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
37950 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
37960 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
37970 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37980 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72        SetTableEr
37990 72 6f 72 28 70 56 74 61 62 2c 20 22 69 6e 76 61  ror(pVtab, "inva
379a0 6c 69 64 20 6e 61 74 69 76 65 20 74 61 62 6c 65  lid native table
379b0 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
379c0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
379d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
379e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
379f0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
37a00 6c 65 20 74 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20  le table;....   
37a10 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61           if ((ta
37a20 62 6c 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  bles != null) &&
37a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37a40 20 20 74 61 62 6c 65 73 2e 54 72 79 47 65 74 56    tables.TryGetV
37a50 61 6c 75 65 28 70 56 74 61 62 2c 20 6f 75 74 20  alue(pVtab, out 
37a60 74 61 62 6c 65 29 29 0d 0a 20 20 20 20 20 20 20  table))..       
37a70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37a80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
37a90 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  able;..         
37aa0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
37ab0 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
37ac0 72 28 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d  r(pVtab, HelperM
37ad0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
37ae0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
37af0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
37b00 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
37b10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
37b20 20 20 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c     "managed tabl
37b30 65 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f  e for {0} not fo
37b40 75 6e 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a  und", pVtab));..
37b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
37b60 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
37b70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
37b80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
37b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37bc0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
37bd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
37be0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
37bf0 6c 6c 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74  llocates and ret
37c00 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f  urns a native po
37c10 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74  inter to a sqlit
37c20 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
37c30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
37c40 75 63 74 75 72 65 20 61 6e 64 20 63 72 65 61 74  ucture and creat
37c50 65 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f  es an associatio
37c60 6e 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64  n between it and
37c70 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
37c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
37c90 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
37ca0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
37cb0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
37cc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
37cd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
37ce0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
37cf0 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
37d00 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
37d10 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
37d20 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
37d30 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62  ct instance to b
37d40 65 20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20  e used..        
37d50 2f 2f 2f 20 77 68 65 6e 20 63 72 65 61 74