System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact a29f59ae2ff7f807c9e61584720767bb988c42c3:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a  obalization;....
0160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0180: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0190: 74 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72  time.CompilerSer
01a0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01b0: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52  ..using System.R
01c0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01d0: 72 76 69 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53  rvices;..using S
01e0: 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e  ystem.Text;....n
01f0: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0200: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a  Data.SQLite..{..
0210: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
0220: 74 65 43 6f 6e 74 65 78 74 20 48 65 6c 70 65 72  teContext Helper
0230: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
0240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0250: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
0260: 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6e 74 65  presents a conte
0270: 78 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  xt from the SQLi
0280: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
0290: 74 68 61 74 20 63 61 6e 0d 0a 20 20 20 20 2f 2f  that can..    //
02a0: 2f 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 74  / be passed to t
02b0: 68 65 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  he sqlite3_resul
02c0: 74 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69  t_*() and associ
02d0: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  ated functions..
02e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
02f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
0310: 69 74 65 43 6f 6e 74 65 78 74 20 3a 20 49 53 51  iteContext : ISQ
0320: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0330: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0340: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0350: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
0360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0370: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
0380: 74 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e  tive context han
0390: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
03a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
03b0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
03c0: 74 50 74 72 20 70 43 6f 6e 74 65 78 74 3b 0d 0a  tPtr pContext;..
03d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
03e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0430: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0440: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0450: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
0460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
0470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0480: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
04c0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
04d0: 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e 0d 0a  ontext handle...
04e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
04f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0500: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0510: 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
0520: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
0530: 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e 64  ive context hand
0540: 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  le to use...    
0550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0560: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
0570: 61 6c 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74  al SQLiteContext
0580: 28 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74  (IntPtr pContext
0590: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
05a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
05b0: 43 6f 6e 74 65 78 74 20 3d 20 70 43 6f 6e 74 65  Context = pConte
05c0: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  xt;..        }..
05d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
05e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0640: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
0650: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
0660: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
0670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0680: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
0690: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
06a0: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
06b0: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
06c0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
06d0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
06e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
06f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0700: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0710: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
0720: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
0730: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
0740: 7b 20 72 65 74 75 72 6e 20 70 43 6f 6e 74 65 78  { return pContex
0750: 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t; }..        }.
0760: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
0770: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
07d0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
07e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
07f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0810: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0820: 73 75 6c 74 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20  sult to NULL... 
0830: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
0850: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 4e 75  ublic void SetNu
0860: 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ll()..        {.
0870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
0880: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
0890: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
08a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
08b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
08c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
08d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
08e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
08f0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
0900: 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f 6e 74 65 78  ult_null(pContex
0910: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
0920: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
09a0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
09b0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
09c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
09d0: 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
09e0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
09f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0a00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0a20: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0a30: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0a40: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
0a50: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
0a60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
0a70: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0a80: 76 6f 69 64 20 53 65 74 44 6f 75 62 6c 65 28 64  void SetDouble(d
0a90: 6f 75 62 6c 65 20 76 61 6c 75 65 29 0d 0a 20 20  ouble value)..  
0aa0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ab0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
0ac0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
0ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
0ae0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
0af0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
0b00: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
0b10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0b20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
0b30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
0b40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
0b50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
0b60: 6c 65 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  le(pContext, val
0b70: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
0b80: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
0b90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
0ba0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
0bb0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
0bc0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e  ble_interop(pCon
0bd0: 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29  text, ref value)
0be0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
0bf0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0c00: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
0c10: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
0c20: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
0c30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
0c90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ca0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
0cb0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
0cc0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0cd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0ce0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
0cf0: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
0d00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
0d20: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
0d30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
0d40: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
0d50: 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
0d60: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0d70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
0d90: 64 20 53 65 74 49 6e 74 28 69 6e 74 20 76 61 6c  d SetInt(int val
0da0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
0dd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
0de0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0df0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
0e00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
0e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0e20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
0e30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
0e40: 6c 74 5f 69 6e 74 28 70 43 6f 6e 74 65 78 74 2c  lt_int(pContext,
0e50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0e60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0ec0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0ee0: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0ef0: 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63  sult to the spec
0f00: 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
0f10: 22 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20  "Int64" />..    
0f20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
0f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0f50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0f60: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0f70: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0f80: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
0f90: 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
0fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0fb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
0fc0: 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74 36 34  ic void SetInt64
0fd0: 28 6c 6f 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  (long value)..  
0fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ff0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
1000: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1020: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1030: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1040: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
1050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1070: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1080: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1090: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
10a0: 34 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75  4(pContext, valu
10b0: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
10c0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
10d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
10e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
10f0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1100: 34 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65  4_interop(pConte
1110: 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  xt, ref value);.
1120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1130: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
1140: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1150: 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
1160: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1170: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11e0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
11f0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1200: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1210: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1220: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
1230: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1260: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1280: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
1290: 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65 20 74  ring" /> value t
12a0: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 76 61 6c  o use.  This val
12b0: 75 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ue will be..    
12c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65      /// converte
12d0: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
12e0: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
12f0: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
1300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1310: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1320: 69 63 20 76 6f 69 64 20 53 65 74 53 74 72 69 6e  ic void SetStrin
1330: 67 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  g(string value).
1340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1350: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1360: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1370: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
13a0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
13c0: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
13d0: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
13e0: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
13f0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1400: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1410: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1420: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1430: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1440: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
1450: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
1460: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1470: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1480: 65 73 75 6c 74 5f 74 65 78 74 28 0d 0a 20 20 20  esult_text(..   
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
14a0: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
14b0: 74 65 73 2e 4c 65 6e 67 74 68 2c 20 28 49 6e 74  tes.Length, (Int
14c0: 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20 20 20  Ptr)(-1));..    
14d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1550: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1560: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
1570: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
1580: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d 0a 20  f="String" />.. 
1590: 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
15a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 65   containing an e
15b0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
15c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15f0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1600: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1610: 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76  ef="String" /> v
1620: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1630: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
1640: 65 20 74 65 78 74 2e 0d 0a 20 20 20 20 20 20 20  e text...       
1650: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
1660: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
1670: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
1680: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
1690: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20   being..        
16a0: 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
16b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16d0: 76 6f 69 64 20 53 65 74 45 72 72 6f 72 28 73 74  void SetError(st
16e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
16f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1700: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1710: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1730: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1740: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1750: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1760: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1770: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1780: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1790: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
17a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
17c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
17e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
17f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1800: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1810: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1820: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1830: 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  t_error(..      
1840: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
1850: 78 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73  xt, bytes, bytes
1860: 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20  .Length);..     
1870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
18f0: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1900: 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65  esult to the spe
1910: 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1920: 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
1930: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
1940: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
1950: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1960: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1970: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1980: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1990: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22  SQLiteErrorCode"
19b0: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65   /> value to use
19c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19e0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
19f0: 45 72 72 6f 72 43 6f 64 65 28 53 51 4c 69 74 65  ErrorCode(SQLite
1a00: 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1a30: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
1a40: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a50: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1a60: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1a70: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1a90: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1aa0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1ab0: 65 72 72 6f 72 5f 63 6f 64 65 28 70 43 6f 6e 74  error_code(pCont
1ac0: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b50: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1b60: 74 20 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74  t result to cont
1b70: 61 69 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  ain the error co
1b80: 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47  de SQLITE_TOOBIG
1b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bb0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
1bc0: 65 74 45 72 72 6f 72 54 6f 6f 42 69 67 28 29 0d  etErrorTooBig().
1bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1be0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1bf0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1c00: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1c10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1c20: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1c30: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
1c50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c60: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c70: 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70 43 6f 6e  rror_toobig(pCon
1c80: 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  text);..        
1c90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1d10: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1d20: 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  lt to contain th
1d30: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c  e error code SQL
1d40: 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20  ITE_NOMEM...    
1d50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
1d70: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
1d80: 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20  NoMemory()..    
1d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da0: 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20     if (pContext 
1db0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1de0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1df0: 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1e00: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1e10: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1e20: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e30: 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78 74 29 3b  nomem(pContext);
1e40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ec0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1ed0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1ef0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
1f00: 3e 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20  > array..       
1f10: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1f50: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1f60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
1f80: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
1f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1fa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
1fb0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c 6f  blic void SetBlo
1fc0: 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 0d  b(byte[] value).
1fd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1ff0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
2000: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2010: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2020: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2030: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
2040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2050: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2070: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2080: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2090: 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20  "value");....   
20a0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
20b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
20c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
20d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20e0: 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c     pContext, val
20f0: 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  ue, value.Length
2100: 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b  , (IntPtr)(-1));
2110: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2120: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2180: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2190: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
21a0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
21b0: 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73 20  a BLOB of zeros 
21c0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
21d0: 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
21e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2200: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
2210: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2220: 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72 6f  e number of zero
2230: 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66 6f   bytes to use fo
2240: 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74 65  r the BLOB conte
2250: 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  xt result...    
2260: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2270: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2280: 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c 6f   void SetZeroBlo
2290: 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  b(int value)..  
22a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22b0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
22c0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
22d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22e0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
22f0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2300: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
2310: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2320: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2330: 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
2340: 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20 76  blob(pContext, v
2350: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2360: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23d0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
23e0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
23f0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
2400: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
2410: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e 0d  QLiteValue" />..
2420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2440: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2450: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2470: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2480: 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a 20  e" /> to use... 
2490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
24b0: 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75  lic void SetValu
24c0: 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61  e(SQLiteValue va
24d0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
24e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24f0: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
2500: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2510: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2520: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2530: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
2540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2550: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
2560: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2570: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
2580: 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
2590: 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
25a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
25b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
25c0: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
25d0: 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  _value(..       
25e0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
25f0: 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65 48  t, value.NativeH
2600: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2610: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2620: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2630: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2640: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26a0: 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c 70  SQLiteValue Help
26b0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
26c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
26e0: 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 61 6c  represents a val
26f0: 75 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ue from the SQLi
2700: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2710: 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20  that can be..   
2720: 20 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74   /// passed to t
2730: 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  he sqlite3_value
2740: 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69 61  _*() and associa
2750: 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  ted functions...
2760: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2770: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2780: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2790: 74 65 56 61 6c 75 65 20 3a 20 49 53 51 4c 69 74  teValue : ISQLit
27a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20  eNativeHandle.. 
27b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27c0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
27d0: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
27e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2800: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d  e value handle..
2810: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2820: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2830: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2840: 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  pValue;..       
2850: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2860: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28c0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
28d0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
28e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28f0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2900: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2910: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
2920: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2930: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
2940: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 68 61      /// value ha
2950: 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndle...        /
2960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2980: 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
2990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29a0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
29b0: 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20  andle to use... 
29c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
29e0: 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
29f0: 28 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 0d  (IntPtr pValue).
2a00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 56 61          this.pVa
2a20: 6c 75 65 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20  lue = pValue;.. 
2a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2ab0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2ac0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2ad0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae0: 20 20 20 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74     /// Invalidat
2af0: 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  es the native va
2b00: 6c 75 65 20 68 61 6e 64 6c 65 2c 20 74 68 65 72  lue handle, ther
2b10: 65 62 79 20 70 72 65 76 65 6e 74 69 6e 67 20 66  eby preventing f
2b20: 75 72 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  urther..        
2b30: 2f 2f 2f 20 61 63 63 65 73 73 20 74 6f 20 69 74  /// access to it
2b40: 20 66 72 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63   from this objec
2b50: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b80: 76 61 74 65 20 76 6f 69 64 20 50 72 65 76 65 6e  vate void Preven
2b90: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 0d  tNativeAccess().
2ba0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2bb0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 20 3d          pValue =
2bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2be0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2bf0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c50: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
2c60: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
2c70: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c90: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2ca0: 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  a logical array 
2cb0: 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  of native pointe
2cc0: 72 73 20 74 6f 20 6e 61 74 69 76 65 20 73 71 6c  rs to native sql
2cd0: 69 74 65 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20  ite3_value..    
2ce0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
2cf0: 65 73 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  es into a manage
2d00: 64 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  d array of <see 
2d10: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2d20: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
2d30: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
2d40: 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ces...        //
2d50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2d60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2d70: 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
2d80: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2d90: 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74  umber of element
2da0: 73 20 69 6e 20 74 68 65 20 6c 6f 67 69 63 61 6c  s in the logical
2db0: 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65   array of native
2dc0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a   sqlite3_value..
2dd0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2de0: 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20  ctures...       
2df0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2e00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e10: 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
2e20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2e30: 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
2e40: 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  o the logical ar
2e50: 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 73 71  ray of native sq
2e60: 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a 20 20 20  lite3_value..   
2e70: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
2e80: 72 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  res to convert..
2e90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2ea0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2eb0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2ec0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
2ed0: 6e 61 67 65 64 20 61 72 72 61 79 20 6f 66 20 3c  naged array of <
2ee0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2ef0: 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Value" /> object
2f00: 20 69 6e 73 74 61 6e 63 65 73 20 6f 72 0d 0a 20   instances or.. 
2f10: 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20         /// null 
2f20: 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
2f30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2f40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69  urns>..        i
2f50: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53  nternal static S
2f60: 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 41 72 72  QLiteValue[] Arr
2f70: 61 79 46 72 6f 6d 53 69 7a 65 41 6e 64 49 6e 74  ayFromSizeAndInt
2f80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2f90: 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
2fa0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2fb0: 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20  argv..          
2fc0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2fd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2fe0: 61 72 67 63 20 3c 20 30 29 0d 0a 20 20 20 20 20  argc < 0)..     
2ff0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3000: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
3010: 20 20 20 20 20 20 20 69 66 20 28 61 72 67 76 20         if (argv 
3020: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
3030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3040: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
3050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
3060: 69 74 65 56 61 6c 75 65 5b 5d 20 72 65 73 75 6c  iteValue[] resul
3070: 74 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 56 61  t = new SQLiteVa
3080: 6c 75 65 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20  lue[argc];....  
3090: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
30a0: 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c 20 6f 66  nt index = 0, of
30b0: 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20  fset = 0;..     
30c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30d0: 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65  ndex < result.Le
30e0: 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20  ngth;..         
30f0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
3100: 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e  ++, offset += In
3110: 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20 20 20 20  tPtr.Size)..    
3120: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3130: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
3140: 72 20 70 41 72 67 20 3d 20 53 51 4c 69 74 65 4d  r pArg = SQLiteM
3150: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
3160: 72 28 61 72 67 76 2c 20 6f 66 66 73 65 74 29 3b  r(argv, offset);
3170: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3180: 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78      result[index
3190: 5d 20 3d 20 28 70 41 72 67 20 21 3d 20 49 6e 74  ] = (pArg != Int
31a0: 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20  Ptr.Zero) ?..   
31b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c0: 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c 75 65   new SQLiteValue
31d0: 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a  (pArg) : null;..
31e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
31f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
3200: 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
3210: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3220: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3230: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3280: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3290: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
32a0: 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ndle Members..  
32b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
32c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
32d0: 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64   Returns the und
32e0: 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e  erlying SQLite n
32f0: 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73  ative handle ass
3300: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
3310: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
3320: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
3330: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3340: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3350: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 4e   public IntPtr N
3360: 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
3370: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3380: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
3390: 20 70 56 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20   pValue; }..    
33a0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
33b0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
33c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3410: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
3420: 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65  Public Propertie
3430: 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
3440: 74 65 20 62 6f 6f 6c 20 70 65 72 73 69 73 74 65  te bool persiste
3450: 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
3460: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3470: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e     /// Returns n
3480: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e  on-zero if the n
3490: 61 74 69 76 65 20 53 51 4c 69 74 65 20 76 61 6c  ative SQLite val
34a0: 75 65 20 68 61 73 20 62 65 65 6e 20 73 75 63 63  ue has been succ
34b0: 65 73 73 66 75 6c 6c 79 0d 0a 20 20 20 20 20 20  essfully..      
34c0: 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 65 64 20    /// persisted 
34d0: 61 73 20 61 20 6d 61 6e 61 67 65 64 20 76 61 6c  as a managed val
34e0: 75 65 20 77 69 74 68 69 6e 20 74 68 69 73 20 6f  ue within this o
34f0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 28  bject instance (
3500: 69 2e 65 2e 20 74 68 65 0d 0a 20 20 20 20 20 20  i.e. the..      
3510: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
3520: 22 56 61 6c 75 65 22 20 2f 3e 20 70 72 6f 70 65  "Value" /> prope
3530: 72 74 79 20 6d 61 79 20 74 68 65 6e 20 62 65 20  rty may then be 
3540: 72 65 61 64 20 73 75 63 63 65 73 73 66 75 6c 6c  read successfull
3550: 79 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y)...        ///
3560: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3570: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
3580: 20 50 65 72 73 69 73 74 65 64 0d 0a 20 20 20 20   Persisted..    
3590: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35a0: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
35b0: 70 65 72 73 69 73 74 65 64 3b 20 7d 0d 0a 20 20  persisted; }..  
35c0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3620: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6f 62        private ob
3630: 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
3640: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3650: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3660: 49 66 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76  If the managed v
3670: 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20 6f 62  alue for this ob
3680: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73  ject instance is
3690: 20 61 76 61 69 6c 61 62 6c 65 20 28 69 2e 65 2e   available (i.e.
36a0: 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   it..        ///
36b0: 20 68 61 73 20 62 65 65 6e 20 70 72 65 76 69 6f   has been previo
36c0: 75 73 6c 79 20 70 65 72 73 69 73 74 65 64 20 76  usly persisted v
36d0: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
36e0: 3d 22 50 65 72 73 69 73 74 22 20 2f 3e 29 20 6d  ="Persist" />) m
36f0: 65 74 68 6f 64 2c 0d 0a 20 20 20 20 20 20 20 20  ethod,..        
3700: 2f 2f 2f 20 74 68 61 74 20 76 61 6c 75 65 20 69  /// that value i
3710: 73 20 72 65 74 75 72 6e 65 64 3b 20 6f 74 68 65  s returned; othe
3720: 72 77 69 73 65 2c 20 61 6e 20 65 78 63 65 70 74  rwise, an except
3730: 69 6f 6e 20 69 73 20 74 68 72 6f 77 6e 2e 20 20  ion is thrown.  
3740: 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  The..        ///
3750: 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20   returned value 
3760: 6d 61 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  may be null...  
3770: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3780: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3790: 62 6c 69 63 20 6f 62 6a 65 63 74 20 56 61 6c 75  blic object Valu
37a0: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
37b0: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
37c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
37e0: 20 28 21 70 65 72 73 69 73 74 65 64 29 0d 0a 20   (!persisted).. 
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
3800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3810: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
3820: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
3830: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
3840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3850: 20 20 20 20 22 76 61 6c 75 65 20 77 61 73 20 6e      "value was n
3860: 6f 74 20 70 65 72 73 69 73 74 65 64 22 29 3b 0d  ot persisted");.
3870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3880: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3890: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
38a0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
38b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
38c0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
38d0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3930: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
3940: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
3950: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3960: 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
3970: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
3980: 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 61 73  type affinity as
3990: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
39a0: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
39b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
39c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
39d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
39e0: 20 20 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61    /// The type a
39f0: 66 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74  ffinity associat
3a00: 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c  ed with this val
3a10: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
3a20: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3a30: 20 20 20 20 20 70 75 62 6c 69 63 20 54 79 70 65       public Type
3a40: 41 66 66 69 6e 69 74 79 20 47 65 74 54 79 70 65  Affinity GetType
3a50: 41 66 66 69 6e 69 74 79 28 29 0d 0a 20 20 20 20  Affinity()..    
3a60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3a70: 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
3a80: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65   IntPtr.Zero) re
3a90: 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  turn TypeAffinit
3aa0: 79 2e 4e 6f 6e 65 3b 0d 0a 20 20 20 20 20 20 20  y.None;..       
3ab0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
3ac0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
3ad0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
3ae0: 70 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  pe(pValue);..   
3af0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3b00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3b50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3b60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3b70: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
3b80: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
3b90: 79 74 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ytes associated 
3ba0: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2c  with this value,
3bb0: 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   if..        ///
3bc0: 20 69 74 20 72 65 66 65 72 73 20 74 6f 20 61 20   it refers to a 
3bd0: 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74  UTF-8 encoded st
3be0: 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ring...        /
3bf0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3c00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
3c10: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
3c20: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
3c30: 62 79 74 65 73 20 61 73 73 6f 63 69 61 74 65 64  bytes associated
3c40: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
3c50: 2e 20 20 54 68 65 20 72 65 74 75 72 6e 65 64 20  .  The returned 
3c60: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f  value..        /
3c70: 2f 2f 20 6d 61 79 20 62 65 20 7a 65 72 6f 2e 0d  // may be zero..
3c80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
3c90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
3ca0: 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74 42   public int GetB
3cb0: 79 74 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20  ytes()..        
3cc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
3cd0: 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
3ce0: 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e  Ptr.Zero) return
3cf0: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
3d00: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
3d10: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
3d20: 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28  te3_value_bytes(
3d30: 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  pValue);..      
3d40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
3d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d90: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3da0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3db0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74  .        /// Get
3dc0: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
3dd0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
3de0: 33 32 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65  32" /> associate
3df0: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
3e00: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
3e10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3e20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3e30: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
3e40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
3e50: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
3e60: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
3e70: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
3e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3e90: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3ea0: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74    public int Get
3eb0: 49 6e 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  Int()..        {
3ec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
3ed0: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
3ee0: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
3ef0: 64 65 66 61 75 6c 74 28 69 6e 74 29 3b 0d 0a 20  default(int);.. 
3f00: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3f10: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
3f20: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
3f30: 6c 75 65 5f 69 6e 74 28 70 56 61 6c 75 65 29 3b  lue_int(pValue);
3f40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
3f50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
3f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3fa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
3fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3fc0: 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65   /// Gets and re
3fd0: 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63  turns the <see c
3fe0: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 61  ref="Int64" /> a
3ff0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
4000: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
4010: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
4020: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4030: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
4040: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
4050: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
4060: 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 61 73 73  f="Int64" /> ass
4070: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
4080: 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  s value...      
4090: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
40a0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
40b0: 20 6c 6f 6e 67 20 47 65 74 49 6e 74 36 34 28 29   long GetInt64()
40c0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
40d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
40e0: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
40f0: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4100: 6c 74 28 6c 6f 6e 67 29 3b 0d 0a 0d 0a 23 69 66  lt(long);....#if
4110: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4120: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4130: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4140: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
4150: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75  ods.sqlite3_valu
4160: 65 5f 69 6e 74 36 34 28 70 56 61 6c 75 65 29 3b  e_int64(pValue);
4170: 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f  ..#elif !SQLITE_
4180: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
4190: 20 20 20 20 20 20 6c 6f 6e 67 20 76 61 6c 75 65        long value
41a0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
41b0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
41c0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
41d0: 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72  alue_int64_inter
41e0: 6f 70 28 70 56 61 6c 75 65 2c 20 72 65 66 20 76  op(pValue, ref v
41f0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
4200: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
4210: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
4220: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
4230: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
4240: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
4250: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
4260: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
42c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
42d0: 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20     /// Gets and 
42e0: 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65  returns the <see
42f0: 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
4300: 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  > associated wit
4310: 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
4320: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
4330: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4340: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4350: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4360: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4370: 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
4380: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4390: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
43a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
43b0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
43c0: 62 6c 69 63 20 64 6f 75 62 6c 65 20 47 65 74 44  blic double GetD
43d0: 6f 75 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  ouble()..       
43e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
43f0: 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e  if (pValue == In
4400: 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72  tPtr.Zero) retur
4410: 6e 20 64 65 66 61 75 6c 74 28 64 6f 75 62 6c 65  n default(double
4420: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4430: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4440: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4450: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4460: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4470: 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
4480: 65 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69  e(pValue);..#eli
4490: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
44a0: 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
44b0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 20 3d 20 30  double value = 0
44c0: 2e 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .0;..           
44d0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
44e0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
44f0: 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
4500: 70 28 70 56 61 6c 75 65 2c 20 72 65 66 20 76 61  p(pValue, ref va
4510: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
4520: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
4530: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
4540: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
4550: 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63  otImplementedExc
4560: 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69  eption();..#endi
4570: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
4580: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
45d0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
45e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
45f0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
4600: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
4610: 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e  cref="String" />
4620: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4630: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
4640: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
4650: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4660: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
4670: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4680: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
4690: 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20  ref="String" /> 
46a0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
46b0: 74 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65  this value.  The
46c0: 20 76 61 6c 75 65 20 69 73 0d 0a 20 20 20 20 20   value is..     
46d0: 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65 64     /// converted
46e0: 20 66 72 6f 6d 20 74 68 65 20 55 54 46 2d 38 20   from the UTF-8 
46f0: 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74  encoding prior t
4700: 6f 20 62 65 69 6e 67 20 72 65 74 75 72 6e 65 64  o being returned
4710: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4720: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4730: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
4740: 20 47 65 74 53 74 72 69 6e 67 28 29 0d 0a 20 20   GetString()..  
4750: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4760: 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
4770: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  == IntPtr.Zero) 
4780: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
4790: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
47a0: 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  length;..       
47b0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 53 74 72       IntPtr pStr
47c0: 69 6e 67 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ing;....#if SQLI
47d0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47e0: 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20           length 
47f0: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
4800: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4810: 6c 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65  lue_bytes(pValue
4820: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4830: 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61 66 65  pString = Unsafe
4840: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
4850: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
4860: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65  (pValue);..#else
4870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ..            le
4880: 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ngth = 0;....   
4890: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
48a0: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
48b0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
48c0: 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f  alue_text_intero
48d0: 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p(..            
48e0: 20 20 20 20 70 56 61 6c 75 65 2c 20 72 65 66 20      pValue, ref 
48f0: 6c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64 69 66  length);..#endif
4900: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4910: 72 65 74 75 72 6e 20 53 51 4c 69 74 65 53 74 72  return SQLiteStr
4920: 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing.StringFromUt
4930: 66 38 49 6e 74 50 74 72 28 70 53 74 72 69 6e 67  f8IntPtr(pString
4940: 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20  , length);..    
4950: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4960: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
49b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
49c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
49d0: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
49e0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 42  the <see cref="B
49f0: 79 74 65 22 20 2f 3e 20 61 72 72 61 79 20 61 73  yte" /> array as
4a00: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4a10: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
4a20: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
4a30: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4a40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
4a50: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
4a60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
4a70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
4a80: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4a90: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
4aa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4ab0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
4ac0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 47 65 74 42  blic byte[] GetB
4ad0: 6c 6f 62 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  lob()..        {
4ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4af0: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4b00: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4b10: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4b20: 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
4b30: 74 65 42 79 74 65 73 2e 46 72 6f 6d 49 6e 74 50  teBytes.FromIntP
4b40: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
4b50: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
4b60: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
4b70: 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 70 56 61 6c  _value_blob(pVal
4b80: 75 65 29 2c 20 47 65 74 42 79 74 65 73 28 29 29  ue), GetBytes())
4b90: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4ba0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4bf0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4c00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4c10: 20 20 2f 2f 2f 20 55 73 65 73 20 74 68 65 20 6e    /// Uses the n
4c20: 61 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64  ative value hand
4c30: 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61 6e 64  le to obtain and
4c40: 20 73 74 6f 72 65 20 74 68 65 20 6d 61 6e 61 67   store the manag
4c50: 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ed value..      
4c60: 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69 73 20 6f    /// for this o
4c70: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2c 20  bject instance, 
4c80: 74 68 75 73 20 73 61 76 69 6e 67 20 69 74 20 66  thus saving it f
4c90: 6f 72 20 6c 61 74 65 72 20 75 73 65 2e 20 20 54  or later use.  T
4ca0: 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20 20 20  he type..       
4cb0: 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d 61 6e 61   /// of the mana
4cc0: 67 65 64 20 76 61 6c 75 65 20 69 73 20 64 65 74  ged value is det
4cd0: 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 74  ermined by the t
4ce0: 79 70 65 20 61 66 66 69 6e 69 74 79 20 6f 66 20  ype affinity of 
4cf0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
4d00: 20 6e 61 74 69 76 65 20 76 61 6c 75 65 2e 20 20   native value.  
4d10: 49 66 20 74 68 65 20 74 79 70 65 20 61 66 66 69  If the type affi
4d20: 6e 69 74 79 20 69 73 20 6e 6f 74 20 72 65 63 6f  nity is not reco
4d30: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a  gnized by this..
4d40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
4d50: 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69 73 20 64  od, no work is d
4d60: 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65 20 69 73  one and false is
4d70: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4d80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4d90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4da0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4db0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
4dc0: 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  if the native va
4dd0: 6c 75 65 20 77 61 73 20 70 65 72 73 69 73 74 65  lue was persiste
4de0: 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 0d  d successfully..
4df0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
4e00: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4e10: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72   public bool Per
4e20: 73 69 73 74 28 29 0d 0a 20 20 20 20 20 20 20 20  sist()..        
4e30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  {..            s
4e40: 77 69 74 63 68 20 28 47 65 74 54 79 70 65 41 66  witch (GetTypeAf
4e50: 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20 20 20  finity())..     
4e60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4e70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
4e80: 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e 69 6e  ypeAffinity.Unin
4e90: 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20 20 20  itialized:..    
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4ec0: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
4ed0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41    PreventNativeA
4f00: 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20  ccess();..      
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73    return (persis
4f30: 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20  ted = true);..  
4f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
4f60: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66       case TypeAf
4f70: 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20  finity.Int64:.. 
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
4fb0: 6c 75 65 20 3d 20 47 65 74 49 6e 74 36 34 28 29  lue = GetInt64()
4fc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
4fd0: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
4fe0: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
4ff0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5000: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5010: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
5020: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
5030: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
5050: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
5060: 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20 20 20  Double:..       
5070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
50a0: 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d 0a 20 20  GetDouble();..  
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50c0: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
50d0: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
5100: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
5110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5120: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5130: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
5140: 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74 3a  peAffinity.Text:
5150: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5160: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5180: 20 76 61 6c 75 65 20 3d 20 47 65 74 53 74 72 69   value = GetStri
5190: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
51b0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
51c0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
51e0: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
51f0: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5220: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5230: 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20  ity.Blob:..     
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5260: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5270: 3d 20 47 65 74 42 79 74 65 73 28 29 3b 0d 0a 20  = GetBytes();.. 
5280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5290: 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61         PreventNa
52a0: 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20  tiveAccess();.. 
52b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70         return (p
52d0: 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29  ersisted = true)
52e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
52f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5300: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
5310: 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c  ypeAffinity.Null
5320: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5330: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 76 61 6c 75 65 20 3d 20 44 42 4e 75 6c 6c    value = DBNull
5360: 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  .Value;..       
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
5390: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
53a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53b0: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
53c0: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
53d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
53f0: 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20      default:..  
5400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5410: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5420: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5430: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
5460: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
5470: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5480: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
5490: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
54f0: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
5500: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
5510: 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20   Enumeration..  
5520: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5530: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61  .    /// These a
5540: 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76  re the allowed v
5550: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 6f 70  alues for the op
5560: 65 72 61 74 6f 72 73 20 74 68 61 74 20 61 72 65  erators that are
5570: 20 70 61 72 74 20 6f 66 20 61 0d 0a 20 20 20 20   part of a..    
5580: 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 20 74  /// constraint t
5590: 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45 52 45  erm in the WHERE
55a0: 20 63 6c 61 75 73 65 20 6f 66 20 61 20 71 75 65   clause of a que
55b0: 72 79 20 74 68 61 74 20 75 73 65 73 20 61 20 76  ry that uses a v
55c0: 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20  irtual..    /// 
55d0: 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  table...    /// 
55e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
55f0: 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
5600: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
5610: 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20 20 20 20  tOp : byte..    
5620: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
5630: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5640: 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
5650: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
5660: 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61 74 6f  equality operato
5670: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
5680: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5690: 20 20 20 20 45 71 75 61 6c 54 6f 20 3d 20 32 2c      EqualTo = 2,
56a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
56b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
56c0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75     /// This valu
56d0: 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  e represents the
56e0: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 70   greater than op
56f0: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
5700: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5710: 0a 20 20 20 20 20 20 20 20 47 72 65 61 74 65 72  .        Greater
5720: 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  Than = 4,....   
5730: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5740: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5750: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
5760: 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73 20 74  sents the less t
5770: 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20  han or equal to 
5780: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5790: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
57a0: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54  >..        LessT
57b0: 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d 20 38  hanOrEqualTo = 8
57c0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
57d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
57e0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
57f0: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
5800: 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 70 65 72  e less than oper
5810: 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ator...        /
5820: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5830: 20 20 20 20 20 20 20 4c 65 73 73 54 68 61 6e 20         LessThan 
5840: 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  = 16,....       
5850: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5860: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
5870: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
5880: 73 20 74 68 65 20 67 72 65 61 74 65 72 20 74 68  s the greater th
5890: 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 6f  an or equal to o
58a0: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
58b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
58c0: 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61 74 65  ..        Greate
58d0: 72 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d  rThanOrEqualTo =
58e0: 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   32,....        
58f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5900: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
5910: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
5920: 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61   the MATCH opera
5930: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5940: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5950: 20 20 20 20 20 20 4d 61 74 63 68 20 3d 20 36 34        Match = 64
5960: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
5970: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
5980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
59d0: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
59e0: 49 6e 64 65 78 46 6c 61 67 73 20 45 6e 75 6d 65  IndexFlags Enume
59f0: 72 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20  ration..    /// 
5a00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
5a10: 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65  // These are the
5a20: 20 61 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20   allowed values 
5a30: 66 6f 72 20 74 68 65 20 69 6e 64 65 78 20 66 6c  for the index fl
5a40: 61 67 73 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ags from the..  
5a50: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
5a60: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
5a70: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
5a80: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
5a90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5aa0: 0a 20 20 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a  .    [Flags()]..
5ab0: 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20      public enum 
5ac0: 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73  SQLiteIndexFlags
5ad0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
5ae0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5af0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 73          /// No s
5b00: 70 65 63 69 61 6c 20 68 61 6e 64 6c 69 6e 67 2e  pecial handling.
5b10: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65    This is the de
5b20: 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20  fault...        
5b30: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5b40: 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30          None = 0
5b50: 78 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  x0,....        /
5b60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5b70: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
5b80: 61 6c 75 65 20 69 6e 64 69 63 61 74 65 73 20 74  alue indicates t
5b90: 68 61 74 20 74 68 65 20 73 63 61 6e 20 6f 66 20  hat the scan of 
5ba0: 74 68 65 20 69 6e 64 65 78 20 77 69 6c 6c 20 76  the index will v
5bb0: 69 73 69 74 20 61 74 0d 0a 20 20 20 20 20 20 20  isit at..       
5bc0: 20 2f 2f 2f 20 6d 6f 73 74 20 6f 6e 65 20 72 6f   /// most one ro
5bd0: 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  w...        /// 
5be0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5bf0: 20 20 20 20 53 63 61 6e 55 6e 69 71 75 65 20 3d      ScanUnique =
5c00: 20 30 78 31 0d 0a 20 20 20 20 7d 0d 0a 20 20 20   0x1..    }..   
5c10: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
5c20: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5c70: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
5c80: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5c90: 69 6e 74 20 48 65 6c 70 65 72 20 43 6c 61 73 73  int Helper Class
5ca0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
5cb0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
5cc0: 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
5cd0: 74 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  ts the native sq
5ce0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
5cf0: 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72 65  traint structure
5d00: 0d 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74  ..    /// from t
5d10: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
5d20: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f  ibrary...    ///
5d30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5d40: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
5d50: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
5d60: 43 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  Constraint..    
5d70: 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
5d80: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73  on Internal Cons
5d90: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
5da0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5db0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
5dc0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
5dd0: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
5de0: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
5df0: 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20  ified native..  
5e00: 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
5e10: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
5e20: 6e 74 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  nt structure... 
5e30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5e40: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
5e50: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5e60: 63 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20  constraint">..  
5e70: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
5e80: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
5e90: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74  ex_constraint st
5ea0: 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d  ructure to use..
5eb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
5ec0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
5ed0: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e  nternal SQLiteIn
5ee0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a  dexConstraint(..
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
5f00: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
5f10: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
5f20: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
5f30: 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
5f40: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
5f50: 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69 6e  : this(constrain
5f60: 74 2e 69 43 6f 6c 75 6d 6e 2c 20 63 6f 6e 73 74  t.iColumn, const
5f70: 72 61 69 6e 74 2e 6f 70 2c 20 63 6f 6e 73 74 72  raint.op, constr
5f80: 61 69 6e 74 2e 75 73 61 62 6c 65 2c 0d 0a 20 20  aint.usable,..  
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fa0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72   constraint.iTer
5fb0: 6d 4f 66 66 73 65 74 29 0d 0a 20 20 20 20 20 20  mOffset)..      
5fc0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5fd0: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
5fe0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
5ff0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6000: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6050: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
6060: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
6070: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
6080: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6090: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
60a0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
60b0: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
60c0: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
60d0: 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20  ified field..   
60e0: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e       /// values.
60f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6100: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6110: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6120: 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20  e="iColumn">..  
6130: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e        /// Column
6140: 20 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69   on left-hand si
6150: 64 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  de of constraint
6160: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6170: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6180: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6190: 3d 22 6f 70 22 3e 0d 0a 20 20 20 20 20 20 20 20  ="op">..        
61a0: 2f 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f  /// Constraint o
61b0: 70 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72  perator (<see cr
61c0: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
61d0: 6f 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29  onstraintOp" />)
61e0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
61f0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6200: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6210: 3d 22 75 73 61 62 6c 65 22 3e 0d 0a 20 20 20 20  ="usable">..    
6220: 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20      /// True if 
6230: 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20  this constraint 
6240: 69 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20  is usable...    
6250: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6260: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
6270: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 54 65 72 6d  aram name="iTerm
6280: 4f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  Offset">..      
6290: 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
62a0: 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72 65  nally - <see cre
62b0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
62c0: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
62d0: 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  x" />..        /
62e0: 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65  // should ignore
62f0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6300: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6310: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
6320: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d  ndexConstraint(.
6330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
6340: 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20   iColumn,..     
6350: 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
6360: 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f  exConstraintOp o
6370: 70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p,..            
6380: 62 79 74 65 20 75 73 61 62 6c 65 2c 0d 0a 20 20  byte usable,..  
6390: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 54            int iT
63a0: 65 72 6d 4f 66 66 73 65 74 0d 0a 20 20 20 20 20  ermOffset..     
63b0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
63c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
63d0: 20 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20   this.iColumn = 
63e0: 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
63f0: 20 20 20 20 20 20 74 68 69 73 2e 6f 70 20 3d 20        this.op = 
6400: 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op;..           
6410: 20 74 68 69 73 2e 75 73 61 62 6c 65 20 3d 20 75   this.usable = u
6420: 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  sable;..        
6430: 20 20 20 20 74 68 69 73 2e 69 54 65 72 6d 4f 66      this.iTermOf
6440: 66 73 65 74 20 3d 20 69 54 65 72 6d 4f 66 66 73  fset = iTermOffs
6450: 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  et;..        }..
6460: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
6470: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
64d0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46  #region Public F
64e0: 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  ields..        /
64f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6500: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e        /// Column
6510: 20 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69   on left-hand si
6520: 64 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  de of constraint
6530: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6540: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6550: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43     public int iC
6560: 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  olumn;....      
6570: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
65c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
65d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
65e0: 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74  onstraint operat
65f0: 6f 72 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53  or (<see cref="S
6600: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
6610: 61 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20  aintOp" />)...  
6620: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6630: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
6640: 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
6650: 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b  ConstraintOp op;
6660: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
66c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
66d0: 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66       /// True if
66e0: 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
66f0: 20 69 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20   is usable...   
6700: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6710: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
6720: 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
6730: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
6740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6780: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
6790: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
67a0: 20 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e       /// Used in
67b0: 74 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20  ternally - <see 
67c0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
67d0: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
67e0: 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20  ndex" />..      
67f0: 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e    /// should ign
6800: 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ore...        //
6810: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6820: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
6830: 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
6840: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
6850: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
6860: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
6870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
68c0: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
68d0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 48 65  eIndexOrderBy He
68e0: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
68f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6900: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
6910: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
6920: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
6930: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74  index_orderby st
6940: 72 75 63 74 75 72 65 20 66 72 6f 6d 0d 0a 20 20  ructure from..  
6950: 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65    /// the SQLite
6960: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
6970: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6980: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
6990: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
69a0: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 0d 0a  teIndexOrderBy..
69b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
69c0: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
69d0: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
69e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
69f0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6a00: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
6a10: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
6a20: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
6a30: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
6a40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
6a50: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
6a60: 72 62 79 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  rby structure...
6a70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
6a80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6a90: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6aa0: 22 6f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20  "orderBy">..    
6ab0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
6ac0: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
6ad0: 5f 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75  _orderby structu
6ae0: 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  re to use...    
6af0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6b00: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
6b10: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  al SQLiteIndexOr
6b20: 64 65 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20  derBy(..        
6b30: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
6b40: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
6b50: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72  index_orderby or
6b60: 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
6b70: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
6b80: 20 20 3a 20 74 68 69 73 28 6f 72 64 65 72 42 79    : this(orderBy
6b90: 2e 69 43 6f 6c 75 6d 6e 2c 20 6f 72 64 65 72 42  .iColumn, orderB
6ba0: 79 2e 64 65 73 63 29 0d 0a 20 20 20 20 20 20 20  y.desc)..       
6bb0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6bc0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
6bd0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6be0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
6bf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
6c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
6c50: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
6c60: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
6c70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6c80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
6c90: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
6ca0: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
6cb0: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
6cc0: 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20  fied field..    
6cd0: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d      /// values..
6ce0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
6cf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
6d00: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6d10: 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20  ="iColumn">..   
6d20: 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20       /// Column 
6d30: 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  number...       
6d40: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6d50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
6d60: 6d 20 6e 61 6d 65 3d 22 64 65 73 63 22 3e 0d 0a  m name="desc">..
6d70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65          /// True
6d80: 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73   for DESC.  Fals
6d90: 65 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20  e for ASC...    
6da0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6db0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
6dc0: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  e SQLiteIndexOrd
6dd0: 65 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erBy(..         
6de0: 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d     int iColumn,.
6df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
6e00: 65 20 64 65 73 63 0d 0a 20 20 20 20 20 20 20 20  e desc..        
6e10: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
6e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
6e30: 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f  is.iColumn = iCo
6e40: 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
6e50: 20 20 20 74 68 69 73 2e 64 65 73 63 20 3d 20 64     this.desc = d
6e60: 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  esc;..        }.
6e70: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
6e80: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
6e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6ee0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
6ef0: 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20  Fields..        
6f00: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6f10: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d         /// Colum
6f20: 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  n number...     
6f30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6f40: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
6f50: 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a  c int iColumn;..
6f60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
6fc0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6fd0: 20 20 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20     /// True for 
6fe0: 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72  DESC.  False for
6ff0: 20 41 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f   ASC...        /
7000: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7010: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
7020: 74 65 20 64 65 73 63 3b 0d 0a 20 20 20 20 20 20  te desc;..      
7030: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
7040: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
7050: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
7060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70a0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
70b0: 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65  egion SQLiteInde
70c0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
70d0: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
70e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
70f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
7100: 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
7110: 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
7120: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
7130: 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 2f  int_usage..    /
7140: 2f 2f 20 73 74 72 75 63 74 75 72 65 20 66 72 6f  // structure fro
7150: 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  m the SQLite cor
7160: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
7170: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7180: 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65      public seale
7190: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e  d class SQLiteIn
71a0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
71b0: 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ge..    {..     
71c0: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
71d0: 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  nal Constructors
71e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
71f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7200: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
7210: 61 20 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e  a default instan
7220: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
7230: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7240: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7250: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
7260: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
7270: 74 55 73 61 67 65 28 29 0d 0a 20 20 20 20 20 20  tUsage()..      
7280: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7290: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
72a0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
72b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
72c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7300: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7310: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7320: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
7330: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
7340: 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  s class using th
7350: 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69  e specified nati
7360: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
7370: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
7380: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73  nstraint_usage s
7390: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
73a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
73b0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
73c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73  param name="cons
73d0: 74 72 61 69 6e 74 55 73 61 67 65 22 3e 0d 0a 20  traintUsage">.. 
73e0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
73f0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
7400: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
7410: 73 61 67 65 20 73 74 72 75 63 74 75 72 65 20 74  sage structure t
7420: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
7430: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
7440: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
7450: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7460: 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20  aintUsage(..    
7470: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
7480: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
7490: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
74a0: 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73 74  aint_usage const
74b0: 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20  raintUsage..    
74c0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
74d0: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f         : this(co
74e0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72  nstraintUsage.ar
74f0: 67 76 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61  gvIndex, constra
7500: 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 29 0d 0a  intUsage.omit)..
7510: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7520: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
7530: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
7540: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7550: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
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 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
75b0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
75c0: 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  e Constructors..
75d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
75e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
75f0: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
7600: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
7610: 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  s class using th
7620: 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65 6c  e specified fiel
7630: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  d..        /// v
7640: 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  alues...        
7650: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7660: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
7670: 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 49 6e 64  am name="argvInd
7680: 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
7690: 2f 20 49 66 20 67 72 65 61 74 65 72 20 74 68 61  / If greater tha
76a0: 6e 20 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20  n 0, constraint 
76b0: 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20  is part of argv 
76c0: 74 6f 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20  to xFilter...   
76d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
76e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
76f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 6d 69 74  param name="omit
7700: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7710: 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65  Do not code a te
7720: 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73  st for this cons
7730: 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20  traint...       
7740: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7750: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
7760: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7770: 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20  aintUsage(..    
7780: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 76          int argv
7790: 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20  Index,..        
77a0: 20 20 20 20 62 79 74 65 20 6f 6d 69 74 0d 0a 20      byte omit.. 
77b0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
77c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
77d0: 20 20 20 20 20 74 68 69 73 2e 61 72 67 76 49 6e       this.argvIn
77e0: 64 65 78 20 3d 20 61 72 67 76 49 6e 64 65 78 3b  dex = argvIndex;
77f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
7800: 69 73 2e 6f 6d 69 74 20 3d 20 6f 6d 69 74 3b 0d  is.omit = omit;.
7810: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7820: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7830: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7880: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
7890: 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69 65 6c  gion Public Fiel
78a0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
78b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
78c0: 20 20 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65     /// If greate
78d0: 72 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72  r than 0, constr
78e0: 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20  aint is part of 
78f0: 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e  argv to xFilter.
7900: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7910: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7920: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67    public int arg
7930: 76 49 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20 20  vIndex;....     
7940: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7990: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
79a0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
79b0: 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74   Do not code a t
79c0: 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e  est for this con
79d0: 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
79e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
79f0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
7a00: 20 62 79 74 65 20 6f 6d 69 74 3b 0d 0a 20 20 20   byte omit;..   
7a10: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
7a20: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
7a30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
7a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7a90: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
7aa0: 6e 64 65 78 49 6e 70 75 74 73 20 48 65 6c 70 65  ndexInputs Helpe
7ab0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
7ac0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7ad0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
7ae0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76 61  epresents the va
7af0: 72 69 6f 75 73 20 69 6e 70 75 74 73 20 70 72 6f  rious inputs pro
7b00: 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c  vided by the SQL
7b10: 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  ite core..    //
7b20: 2f 20 6c 69 62 72 61 72 79 20 74 6f 20 74 68 65  / library to the
7b30: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
7b40: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
7b50: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  .BestIndex" /> m
7b60: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ethod...    /// 
7b70: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7b80: 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c  public sealed cl
7b90: 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 49  ass SQLiteIndexI
7ba0: 6e 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  nputs..    {..  
7bb0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
7bc0: 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74  ternal Construct
7bd0: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
7be0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7bf0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
7c00: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
7c10: 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
7c20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7c30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7c40: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7c50: 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20  nConstraint">.. 
7c60: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
7c70: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
7c80: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
7c90: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 69 6e  onstraint" /> in
7ca0: 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20  stances to..    
7cb0: 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f      /// pre-allo
7cc0: 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d  cate space for..
7cd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
7ce0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
7cf0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7d00: 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20  nOrderBy">..    
7d10: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
7d20: 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  er of <see cref=
7d30: 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65  "SQLiteIndexOrde
7d40: 72 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  rBy" /> instance
7d50: 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
7d60: 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73  / pre-allocate s
7d70: 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20  pace for...     
7d80: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
7d90: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
7da0: 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  l SQLiteIndexInp
7db0: 75 74 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61  uts(int nConstra
7dc0: 69 6e 74 2c 20 69 6e 74 20 6e 4f 72 64 65 72 42  int, int nOrderB
7dd0: 79 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  y)..        {.. 
7de0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
7df0: 72 61 69 6e 74 73 20 3d 20 6e 65 77 20 53 51 4c  raints = new SQL
7e00: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7e10: 6e 74 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b  nt[nConstraint];
7e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 72  ..            or
7e30: 64 65 72 42 79 73 20 3d 20 6e 65 77 20 53 51 4c  derBys = new SQL
7e40: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b  iteIndexOrderBy[
7e50: 6e 4f 72 64 65 72 42 79 5d 3b 0d 0a 20 20 20 20  nOrderBy];..    
7e60: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
7e70: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
7e80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7ed0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7ee0: 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65  Public Propertie
7ef0: 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
7f00: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  te SQLiteIndexCo
7f10: 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74  nstraint[] const
7f20: 72 61 69 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20  raints;..       
7f30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7f40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61          /// An a
7f50: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
7f60: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  f="SQLiteIndexCo
7f70: 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 6f 62 6a  nstraint" /> obj
7f80: 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a  ect instances,..
7f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 61 63 68          /// each
7fa0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
7fb0: 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 64  rmation supplied
7fc0: 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
7fd0: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
7fe0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7ff0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
8000: 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
8010: 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 43 6f 6e  Constraint[] Con
8020: 73 74 72 61 69 6e 74 73 0d 0a 20 20 20 20 20 20  straints..      
8030: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8040: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f   get { return co
8050: 6e 73 74 72 61 69 6e 74 73 3b 20 7d 0d 0a 20 20  nstraints; }..  
8060: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8070: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
80c0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
80d0: 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
80e0: 5b 5d 20 6f 72 64 65 72 42 79 73 3b 0d 0a 20 20  [] orderBys;..  
80f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8100: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8110: 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65   An array of <se
8120: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
8130: 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 6f  dexOrderBy" /> o
8140: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2c  bject instances,
8150: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 61  ..        /// ea
8160: 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e  ch containing in
8170: 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c 69  formation suppli
8180: 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
8190: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
81a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
81b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
81c0: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
81d0: 65 78 4f 72 64 65 72 42 79 5b 5d 20 4f 72 64 65  exOrderBy[] Orde
81e0: 72 42 79 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  rBys..        {.
81f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
8200: 20 7b 20 72 65 74 75 72 6e 20 6f 72 64 65 72 42   { return orderB
8210: 79 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ys; }..        }
8220: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
8230: 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
8240: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
8250: 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
82a0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
82b0: 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
82c0: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
82d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
82e0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
82f0: 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
8300: 74 68 65 20 76 61 72 69 6f 75 73 20 6f 75 74 70  the various outp
8310: 75 74 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  uts provided to 
8320: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
8330: 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79  .    /// library
8340: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
8350: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
8360: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
8370: 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
8380: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8390: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65  >..    public se
83a0: 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
83b0: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 0d 0a 20  eIndexOutputs.. 
83c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
83d0: 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43  egion Internal C
83e0: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
83f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
8400: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
8410: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
8420: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
8430: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
8440: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8450: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
8460: 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61  m name="nConstra
8470: 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
8480: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
8490: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
84a0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
84b0: 74 55 73 61 67 65 22 20 2f 3e 20 69 6e 73 74 61  tUsage" /> insta
84c0: 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nces..        //
84d0: 2f 20 74 6f 20 70 72 65 2d 61 6c 6c 6f 63 61 74  / to pre-allocat
84e0: 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20  e space for...  
84f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
8500: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  m>..        inte
8510: 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78  rnal SQLiteIndex
8520: 4f 75 74 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e  Outputs(int nCon
8530: 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20  straint)..      
8540: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8550: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
8560: 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  s = new SQLiteIn
8570: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
8580: 67 65 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b  ge[nConstraint];
8590: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
85a0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
85b0: 2f 2f 20 42 55 47 46 49 58 3a 20 43 72 65 61 74  // BUGFIX: Creat
85c0: 65 20 74 68 65 20 5b 65 6d 70 74 79 5d 20 63 6f  e the [empty] co
85d0: 6e 73 74 72 61 69 6e 74 20 75 73 61 67 65 73 20  nstraint usages 
85e0: 6e 6f 77 20 73 6f 20 74 68 65 79 20 63 61 6e 20  now so they can 
85f0: 62 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  be..            
8600: 2f 2f 20 20 20 20 20 20 20 20 20 75 73 65 64 20  //         used 
8610: 62 79 20 74 68 65 20 78 42 65 73 74 49 6e 64 65  by the xBestInde
8620: 78 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20  x callback...   
8630: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8640: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
8650: 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  t iConstraint = 
8660: 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c  0; iConstraint <
8670: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43   nConstraint; iC
8680: 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20  onstraint++)..  
8690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
86a0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69  nstraintUsages[i
86b0: 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e 65  Constraint] = ne
86c0: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  w SQLiteIndexCon
86d0: 73 74 72 61 69 6e 74 55 73 61 67 65 28 29 3b 0d  straintUsage();.
86e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
86f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8700: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8720: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
8760: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8770: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
8780: 65 73 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  es if the native
8790: 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 20 66   estimatedRows f
87a0: 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64  ield can be used
87b0: 2c 20 62 61 73 65 64 20 6f 6e 0d 0a 20 20 20 20  , based on..    
87c0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 76 61 69      /// the avai
87d0: 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66  lable version of
87e0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
87f0: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
8800: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8810: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
8820: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8830: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
8840: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
8850: 22 45 73 74 69 6d 61 74 65 64 52 6f 77 73 22 20  "EstimatedRows" 
8860: 2f 3e 20 70 72 6f 70 65 72 74 79 20 69 73 20 73  /> property is s
8870: 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20  upported..      
8880: 20 20 2f 2f 2f 20 62 79 20 74 68 65 20 53 51 4c    /// by the SQL
8890: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
88a0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
88b0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
88c0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43     public bool C
88d0: 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f  anUseEstimatedRo
88e0: 77 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ws()..        {.
88f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
8900: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
8910: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62  hods.sqlite3_lib
8920: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
8930: 20 3e 3d 20 33 30 30 38 30 30 32 29 0d 0a 20 20   >= 3008002)..  
8940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8950: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
8960: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
8970: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
8980: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
8990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
89e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
89f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
8a00: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61  rmines if the na
8a10: 74 69 76 65 20 66 6c 61 67 73 20 66 69 65 6c 64  tive flags field
8a20: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61   can be used, ba
8a30: 73 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  sed on the..    
8a40: 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c      /// availabl
8a50: 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  e version of the
8a60: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
8a70: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
8a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8a90: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
8aa0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
8ab0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
8ac0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 64  e <see cref="Ind
8ad0: 65 78 46 6c 61 67 73 22 20 2f 3e 20 70 72 6f 70  exFlags" /> prop
8ae0: 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74 65  erty is supporte
8af0: 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d by..        //
8b00: 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  / the SQLite cor
8b10: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
8b20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
8b30: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
8b40: 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 49 6e  ic bool CanUseIn
8b50: 64 65 78 46 6c 61 67 73 28 29 0d 0a 20 20 20 20  dexFlags()..    
8b60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8b70: 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74     if (UnsafeNat
8b80: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
8b90: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75  e3_libversion_nu
8ba0: 6d 62 65 72 28 29 20 3e 3d 20 33 30 30 39 30 30  mber() >= 300900
8bb0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
8bc0: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
8bd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8be0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
8bf0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8c00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8c50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
8c60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8c70: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
8c80: 74 68 65 20 6e 61 74 69 76 65 20 66 6c 61 67 73  the native flags
8c90: 20 66 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73   field can be us
8ca0: 65 64 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ed, based on the
8cb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 76  ..        /// av
8cc0: 61 69 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20  ailable version 
8cd0: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  of the SQLite co
8ce0: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
8cf0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
8d00: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8d10: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
8d20: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
8d30: 20 69 66 20 74 68 65 20 3c 73 65 65 20 63 72 65   if the <see cre
8d40: 66 3d 22 43 6f 6c 75 6d 6e 73 55 73 65 64 22 20  f="ColumnsUsed" 
8d50: 2f 3e 20 70 72 6f 70 65 72 74 79 20 69 73 20 73  /> property is s
8d60: 75 70 70 6f 72 74 65 64 20 62 79 0d 0a 20 20 20  upported by..   
8d70: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
8d80: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
8d90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8da0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
8db0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43     public bool C
8dc0: 61 6e 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65 64  anUseColumnsUsed
8dd0: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
8de0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55             if (U
8df0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
8e00: 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  ds.sqlite3_libve
8e10: 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e  rsion_number() >
8e20: 3d 20 33 30 31 30 30 30 30 29 0d 0a 20 20 20 20  = 3010000)..    
8e30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8e40: 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20  rn true;....    
8e50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
8e60: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
8e70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
8e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ec0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
8ed0: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
8ee0: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
8ef0: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
8f00: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
8f10: 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e  sage[] constrain
8f20: 74 55 73 61 67 65 73 3b 0d 0a 20 20 20 20 20 20  tUsages;..      
8f30: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8f40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  .        /// An 
8f50: 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
8f60: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
8f70: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22 20  onstraintUsage" 
8f80: 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  /> object..     
8f90: 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 73     /// instances
8fa0: 2c 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e  , each containin
8fb0: 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f  g information to
8fc0: 20 62 65 20 73 75 70 70 6c 69 65 64 20 74 6f 20   be supplied to 
8fd0: 74 68 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  the SQLite..    
8fe0: 20 20 20 20 2f 2f 2f 20 63 6f 72 65 20 6c 69 62      /// core lib
8ff0: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
9000: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9010: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
9020: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
9030: 69 6e 74 55 73 61 67 65 5b 5d 20 43 6f 6e 73 74  intUsage[] Const
9040: 72 61 69 6e 74 55 73 61 67 65 73 0d 0a 20 20 20  raintUsages..   
9050: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9060: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
9070: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
9080: 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s; }..        }.
9090: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
90a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
90f0: 69 76 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e  ivate int indexN
9100: 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  umber;..        
9110: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9120: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65         /// Numbe
9130: 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  r used to help i
9140: 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
9150: 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69  cted index.  Thi
9160: 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20  s value will..  
9170: 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20        /// later 
9180: 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  be provided to t
9190: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
91a0: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
91b0: 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20  le.Filter" />.. 
91c0: 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
91d0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
91e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
91f0: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 49      public int I
9200: 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20 20 20  ndexNumber..    
9210: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9220: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
9230: 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a  indexNumber; }..
9240: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
9250: 7b 20 69 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20  { indexNumber = 
9260: 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
9270: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
92d0: 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
92e0: 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20   indexString;.. 
92f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9300: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9310: 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / String used to
9320: 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
9330: 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
9340: 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  x.  This value w
9350: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
9360: 20 6c 61 74 65 72 20 62 65 20 70 72 6f 76 69 64   later be provid
9370: 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63  ed to the <see c
9380: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
9390: 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
93a0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
93b0: 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  / method...     
93c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
93d0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
93e0: 63 20 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74  c string IndexSt
93f0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ring..        {.
9400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
9410: 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53   { return indexS
9420: 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20  tring; }..      
9430: 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65        set { inde
9440: 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b  xString = value;
9450: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9460: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
94c0: 61 74 65 20 69 6e 74 20 6e 65 65 64 54 6f 46 72  ate int needToFr
94d0: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a  eeIndexString;..
94e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
94f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9500: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
9510: 68 65 20 69 6e 64 65 78 20 73 74 72 69 6e 67 20  he index string 
9520: 6d 75 73 74 20 62 65 20 66 72 65 65 64 20 62 79  must be freed by
9530: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
9540: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ..        /// li
9550: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
9560: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9570: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
9580: 6e 74 20 4e 65 65 64 54 6f 46 72 65 65 49 6e 64  nt NeedToFreeInd
9590: 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  exString..      
95a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
95b0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 65   get { return ne
95c0: 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72  edToFreeIndexStr
95d0: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
95e0: 20 20 20 20 73 65 74 20 7b 20 6e 65 65 64 54 6f      set { needTo
95f0: 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20  FreeIndexString 
9600: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
9610: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9620: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9660: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9670: 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20      private int 
9680: 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b  orderByConsumed;
9690: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
96a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
96b0: 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 6f 75 74   /// True if out
96c0: 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f  put is already o
96d0: 72 64 65 72 65 64 2e 0d 0a 20 20 20 20 20 20 20  rdered...       
96e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
96f0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
9700: 69 6e 74 20 4f 72 64 65 72 42 79 43 6f 6e 73 75  int OrderByConsu
9710: 6d 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  med..        {..
9720: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
9730: 7b 20 72 65 74 75 72 6e 20 6f 72 64 65 72 42 79  { return orderBy
9740: 43 6f 6e 73 75 6d 65 64 3b 20 7d 0d 0a 20 20 20  Consumed; }..   
9750: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6f           set { o
9760: 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d  rderByConsumed =
9770: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
9780: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
97e0: 20 20 20 70 72 69 76 61 74 65 20 64 6f 75 62 6c     private doubl
97f0: 65 3f 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74  e? estimatedCost
9800: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
9810: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9820: 20 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20    /// Estimated 
9830: 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68  cost of using th
9840: 69 73 20 69 6e 64 65 78 2e 20 20 55 73 69 6e 67  is index.  Using
9850: 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65   a null value he
9860: 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
9870: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61  indicates that a
9880: 20 64 65 66 61 75 6c 74 20 65 73 74 69 6d 61 74   default estimat
9890: 65 64 20 63 6f 73 74 20 76 61 6c 75 65 20 73 68  ed cost value sh
98a0: 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20  ould be used... 
98b0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
98c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
98d0: 75 62 6c 69 63 20 64 6f 75 62 6c 65 3f 20 45 73  ublic double? Es
98e0: 74 69 6d 61 74 65 64 43 6f 73 74 0d 0a 20 20 20  timatedCost..   
98f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9900: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
9910: 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20   estimatedCost; 
9920: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  }..            s
9930: 65 74 20 7b 20 65 73 74 69 6d 61 74 65 64 43 6f  et { estimatedCo
9940: 73 74 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  st = value; }.. 
9950: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9960: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
99a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
99b0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6c         private l
99c0: 6f 6e 67 3f 20 65 73 74 69 6d 61 74 65 64 52 6f  ong? estimatedRo
99d0: 77 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ws;..        ///
99e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
99f0: 20 20 20 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65      /// Estimate
9a00: 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  d number of rows
9a10: 20 72 65 74 75 72 6e 65 64 2e 20 20 55 73 69 6e   returned.  Usin
9a20: 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68  g a null value h
9a30: 65 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ere..        ///
9a40: 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
9a50: 61 20 64 65 66 61 75 6c 74 20 65 73 74 69 6d 61  a default estima
9a60: 74 65 64 20 72 6f 77 73 20 76 61 6c 75 65 20 73  ted rows value s
9a70: 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a  hould be used...
9a80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
9a90: 20 70 72 6f 70 65 72 74 79 20 68 61 73 20 6e 6f   property has no
9aa0: 20 65 66 66 65 63 74 20 69 66 20 74 68 65 20 53   effect if the S
9ab0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
9ac0: 72 79 20 69 73 20 6e 6f 74 20 61 74 0d 0a 20 20  ry is not at..  
9ad0: 20 20 20 20 20 20 2f 2f 2f 20 6c 65 61 73 74 20        /// least 
9ae0: 76 65 72 73 69 6f 6e 20 33 2e 38 2e 32 2e 0d 0a  version 3.8.2...
9af0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
9b00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9b10: 70 75 62 6c 69 63 20 6c 6f 6e 67 3f 20 45 73 74  public long? Est
9b20: 69 6d 61 74 65 64 52 6f 77 73 0d 0a 20 20 20 20  imatedRows..    
9b30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9b40: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
9b50: 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 7d  estimatedRows; }
9b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
9b70: 74 20 7b 20 65 73 74 69 6d 61 74 65 64 52 6f 77  t { estimatedRow
9b80: 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  s = value; }..  
9b90: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9ba0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9bf0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
9c00: 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 3f 20  LiteIndexFlags? 
9c10: 69 6e 64 65 78 46 6c 61 67 73 3b 0d 0a 20 20 20  indexFlags;..   
9c20: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9c30: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
9c40: 54 68 65 20 66 6c 61 67 73 20 74 68 61 74 20 73  The flags that s
9c50: 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 77 69  hould be used wi
9c60: 74 68 20 74 68 69 73 20 69 6e 64 65 78 2e 20 20  th this index.  
9c70: 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c  Using a null val
9c80: 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
9c90: 68 65 72 65 20 69 6e 64 69 63 61 74 65 73 20 74  here indicates t
9ca0: 68 61 74 20 61 20 64 65 66 61 75 6c 74 20 66 6c  hat a default fl
9cb0: 61 67 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64  ags value should
9cc0: 20 62 65 20 75 73 65 64 2e 20 20 54 68 69 73 0d   be used.  This.
9cd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  .        /// pro
9ce0: 70 65 72 74 79 20 68 61 73 20 6e 6f 20 65 66 66  perty has no eff
9cf0: 65 63 74 20 69 66 20 74 68 65 20 53 51 4c 69 74  ect if the SQLit
9d00: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69  e core library i
9d10: 73 20 6e 6f 74 20 61 74 20 6c 65 61 73 74 0d 0a  s not at least..
9d20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 65 72 73          /// vers
9d30: 69 6f 6e 20 33 2e 39 2e 30 2e 0d 0a 20 20 20 20  ion 3.9.0...    
9d40: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9d50: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
9d60: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c  ic SQLiteIndexFl
9d70: 61 67 73 3f 20 49 6e 64 65 78 46 6c 61 67 73 0d  ags? IndexFlags.
9d80: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9d90: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
9da0: 74 75 72 6e 20 69 6e 64 65 78 46 6c 61 67 73 3b  turn indexFlags;
9db0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9dc0: 73 65 74 20 7b 20 69 6e 64 65 78 46 6c 61 67 73  set { indexFlags
9dd0: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
9de0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9df0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9e40: 20 20 20 20 20 70 72 69 76 61 74 65 20 6c 6f 6e       private lon
9e50: 67 3f 20 63 6f 6c 75 6d 6e 73 55 73 65 64 3b 0d  g? columnsUsed;.
9e60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
9e70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9e80: 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
9e90: 20 20 20 20 2f 2f 2f 20 49 6e 64 69 63 61 74 65      /// Indicate
9ea0: 73 20 77 68 69 63 68 20 63 6f 6c 75 6d 6e 73 20  s which columns 
9eb0: 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  of the virtual t
9ec0: 61 62 6c 65 20 6d 61 79 20 62 65 20 72 65 71 75  able may be requ
9ed0: 69 72 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  ired by the..   
9ee0: 20 20 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74       /// current
9ef0: 20 73 63 61 6e 2e 20 20 56 69 72 74 75 61 6c 20   scan.  Virtual 
9f00: 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 20 61 72  table columns ar
9f10: 65 20 6e 75 6d 62 65 72 65 64 20 66 72 6f 6d 20  e numbered from 
9f20: 7a 65 72 6f 20 69 6e 20 74 68 65 0d 0a 20 20 20  zero in the..   
9f30: 20 20 20 20 20 2f 2f 2f 20 6f 72 64 65 72 20 69       /// order i
9f40: 6e 20 77 68 69 63 68 20 74 68 65 79 20 61 70 70  n which they app
9f50: 65 61 72 20 77 69 74 68 69 6e 20 74 68 65 20 43  ear within the C
9f60: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
9f70: 65 6d 65 6e 74 20 70 61 73 73 65 64 0d 0a 20 20  ement passed..  
9f80: 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 73 71 6c        /// to sql
9f90: 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
9fa0: 62 28 29 2e 20 20 46 6f 72 20 74 68 65 20 66 69  b().  For the fi
9fb0: 72 73 74 20 36 33 20 63 6f 6c 75 6d 6e 73 20 28  rst 63 columns (
9fc0: 63 6f 6c 75 6d 6e 73 20 30 2d 36 32 29 2c 0d 0a  columns 0-62),..
9fd0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
9fe0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 62 69  corresponding bi
9ff0: 74 20 69 73 20 73 65 74 20 77 69 74 68 69 6e 20  t is set within 
a000: 74 68 65 20 62 69 74 20 6d 61 73 6b 20 69 66 20  the bit mask if 
a010: 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 61 79 0d 0a  the column may..
a020: 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 72          /// be r
a030: 65 71 75 69 72 65 64 20 62 79 20 53 51 4c 69 74  equired by SQLit
a040: 65 2e 20 20 49 66 20 74 68 65 20 74 61 62 6c 65  e.  If the table
a050: 20 68 61 73 20 61 74 20 6c 65 61 73 74 20 36 34   has at least 64
a060: 20 63 6f 6c 75 6d 6e 73 20 61 6e 64 0d 0a 20 20   columns and..  
a070: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 20 63 6f        /// any co
a080: 6c 75 6d 6e 20 74 6f 20 74 68 65 20 72 69 67 68  lumn to the righ
a090: 74 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 36  t of the first 6
a0a0: 33 20 69 73 20 72 65 71 75 69 72 65 64 2c 20 74  3 is required, t
a0b0: 68 65 6e 20 62 69 74 20 36 33 20 6f 66 0d 0a 20  hen bit 63 of.. 
a0c0: 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 55 73         /// colUs
a0d0: 65 64 20 69 73 20 61 6c 73 6f 20 73 65 74 2e 20  ed is also set. 
a0e0: 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
a0f0: 20 63 6f 6c 75 6d 6e 20 69 43 6f 6c 20 6d 61 79   column iCol may
a100: 20 62 65 20 72 65 71 75 69 72 65 64 0d 0a 20 20   be required..  
a110: 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65        /// if the
a120: 20 65 78 70 72 65 73 73 69 6f 6e 0d 0a 20 20 20   expression..   
a130: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
a140: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
a150: 61 72 61 3e 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  ara><code>..    
a160: 20 20 20 20 2f 2f 2f 20 28 63 6f 6c 55 73 65 64      /// (colUsed
a170: 20 26 61 6d 70 3b 20 28 28 73 71 6c 69 74 65 33   &amp; ((sqlite3
a180: 5f 75 69 6e 74 36 34 29 31 20 26 6c 74 3b 26 6c  _uint64)1 &lt;&l
a190: 74 3b 20 28 69 43 6f 6c 26 67 74 3b 3d 36 33 20  t; (iCol&gt;=63 
a1a0: 3f 20 36 33 20 3a 20 69 43 6f 6c 29 29 29 0d 0a  ? 63 : iCol)))..
a1b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f          /// </co
a1c0: 64 65 3e 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  de></para>..    
a1d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
a1e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 76 61 6c          /// eval
a1f0: 75 61 74 65 73 20 74 6f 20 6e 6f 6e 2d 7a 65 72  uates to non-zer
a200: 6f 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c  o.  Using a null
a210: 20 76 61 6c 75 65 20 68 65 72 65 20 69 6e 64 69   value here indi
a220: 63 61 74 65 73 20 74 68 61 74 20 61 0d 0a 20 20  cates that a..  
a230: 20 20 20 20 20 20 2f 2f 2f 20 64 65 66 61 75 6c        /// defaul
a240: 74 20 66 6c 61 67 73 20 76 61 6c 75 65 20 73 68  t flags value sh
a250: 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 20 20 54  ould be used.  T
a260: 68 69 73 20 70 72 6f 70 65 72 74 79 20 68 61 73  his property has
a270: 20 6e 6f 20 65 66 66 65 63 74 20 69 66 0d 0a 20   no effect if.. 
a280: 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53         /// the S
a290: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
a2a0: 72 79 20 69 73 20 6e 6f 74 20 61 74 20 6c 65 61  ry is not at lea
a2b0: 73 74 20 76 65 72 73 69 6f 6e 20 33 2e 31 30 2e  st version 3.10.
a2c0: 30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  0...        /// 
a2d0: 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
a2e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a2f0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
a300: 6c 6f 6e 67 3f 20 43 6f 6c 75 6d 6e 73 55 73 65  long? ColumnsUse
a310: 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
a320: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
a330: 72 65 74 75 72 6e 20 63 6f 6c 75 6d 6e 73 55 73  return columnsUs
a340: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ed; }..         
a350: 20 20 20 73 65 74 20 7b 20 63 6f 6c 75 6d 6e 73     set { columns
a360: 55 73 65 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  Used = value; }.
a370: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
a380: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
a390: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
a3a0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
a3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a400: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
a410: 64 65 78 20 48 65 6c 70 65 72 20 43 6c 61 73 73  dex Helper Class
a420: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
a430: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
a440: 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
a450: 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20 69  ts the various i
a460: 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74  nputs and output
a470: 73 20 75 73 65 64 20 77 69 74 68 20 74 68 65 0d  s used with the.
a480: 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
a490: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
a4a0: 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
a4b0: 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
a4c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a4d0: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
a4e0: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
a4f0: 74 65 49 6e 64 65 78 0d 0a 20 20 20 20 7b 0d 0a  teIndex..    {..
a500: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
a510: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
a520: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
a530: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a540: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
a550: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
a560: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
a570: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
a580: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
a590: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
a5a0: 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d  ="nConstraint">.
a5b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
a5c0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
a5d0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
a5e0: 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20  xConstraint" /> 
a5f0: 28 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  (and..        //
a600: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
a610: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
a620: 6e 74 55 73 61 67 65 22 20 2f 3e 29 20 69 6e 73  ntUsage" />) ins
a630: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
a640: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
a650: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
a660: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
a670: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
a680: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
a690: 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20  OrderBy">..     
a6a0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
a6b0: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
a6c0: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
a6d0: 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73  By" /> instances
a6e0: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
a6f0: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
a700: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
a710: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a720: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
a730: 20 53 51 4c 69 74 65 49 6e 64 65 78 28 0d 0a 20   SQLiteIndex(.. 
a740: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
a750: 43 6f 6e 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20  Constraint,..   
a760: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72           int nOr
a770: 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
a780: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
a790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70  .            inp
a7a0: 75 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  uts = new SQLite
a7b0: 49 6e 64 65 78 49 6e 70 75 74 73 28 6e 43 6f 6e  IndexInputs(nCon
a7c0: 73 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72 42  straint, nOrderB
a7d0: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
a7e0: 20 6f 75 74 70 75 74 73 20 3d 20 6e 65 77 20 53   outputs = new S
a7f0: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
a800: 73 28 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d  s(nConstraint);.
a810: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
a820: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
a830: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a880: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
a890: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 61 72  gion Private Mar
a8a0: 73 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68  shal Helper Meth
a8b0: 6f 64 73 20 28 46 6f 72 20 54 65 73 74 20 55 73  ods (For Test Us
a8c0: 65 20 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20  e Only)..       
a8d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a8e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65          /// Atte
a8f0: 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e  mpts to determin
a900: 65 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20  e the structure 
a910: 73 69 7a 65 73 20 6e 65 65 64 65 64 20 74 6f 20  sizes needed to 
a920: 63 72 65 61 74 65 20 61 6e 64 0d 0a 20 20 20 20  create and..    
a930: 20 20 20 20 2f 2f 2f 20 70 6f 70 75 6c 61 74 65      /// populate
a940: 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20   a native..     
a950: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
a960: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
a970: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
a980: 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20  dex_info" />..  
a990: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
a9a0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
a9b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a9c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
a9d0: 20 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 49 6e 66   name="sizeOfInf
a9e0: 6f 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20  oType">..       
a9f0: 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66   /// The size of
aa00: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
aa10: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
aa20: 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
aa30: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
aa40: 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a  index_info" />..
aa50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
aa60: 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20  cture is stored 
aa70: 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  here...        /
aa80: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
aa90: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
aaa0: 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e 73  name="sizeOfCons
aab0: 74 72 61 69 6e 74 54 79 70 65 22 3e 0d 0a 20 20  traintType">..  
aac0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69        /// The si
aad0: 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  ze of the native
aae0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
aaf0: 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
ab00: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
ab10: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
ab20: 72 61 69 6e 74 22 20 2f 3e 0d 0a 20 20 20 20 20  raint" />..     
ab30: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
ab40: 20 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e   is stored here.
ab50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
ab60: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
ab70: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
ab80: 22 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79  "sizeOfOrderByTy
ab90: 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  pe">..        //
aba0: 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68  / The size of th
abb0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
abc0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
abd0: 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  "UnsafeNativeMet
abe0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
abf0: 65 78 5f 6f 72 64 65 72 62 79 22 20 2f 3e 0d 0a  ex_orderby" />..
ac00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
ac10: 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20  cture is stored 
ac20: 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  here...        /
ac30: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ac40: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
ac50: 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e 73  name="sizeOfCons
ac60: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 22  traintUsageType"
ac70: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
ac80: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e  he size of the n
ac90: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
aca0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
acb0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
acc0: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
acd0: 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
ace0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
acf0: 2f 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73  / structure is s
ad00: 74 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20  tored here...   
ad10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
ad20: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
ad30: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 53  te static void S
ad40: 69 7a 65 4f 66 4e 61 74 69 76 65 28 0d 0a 20 20  izeOfNative(..  
ad50: 20 20 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e            out in
ad60: 74 20 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65  t sizeOfInfoType
ad70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ,..            o
ad80: 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e  ut int sizeOfCon
ad90: 73 74 72 61 69 6e 74 54 79 70 65 2c 0d 0a 20 20  straintType,..  
ada0: 20 20 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e            out in
adb0: 74 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54  t sizeOfOrderByT
adc0: 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ype,..          
add0: 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65 4f 66    out int sizeOf
ade0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54  ConstraintUsageT
adf0: 79 70 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ype..           
ae00: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
ae10: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f             sizeO
ae20: 66 49 6e 66 6f 54 79 70 65 20 3d 20 4d 61 72 73  fInfoType = Mars
ae30: 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
ae40: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
ae50: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
ae60: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
ae70: 69 6e 64 65 78 5f 69 6e 66 6f 29 29 3b 0d 0a 0d  index_info));...
ae80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a  .            siz
ae90: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70  eOfConstraintTyp
aea0: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
aeb0: 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
aec0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
aed0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
aee0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
aef0: 6e 73 74 72 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20  nstraint));.... 
af00: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f             sizeO
af10: 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d  fOrderByType = M
af20: 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79  arshal.SizeOf(ty
af30: 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
af40: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
af50: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
af60: 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
af70: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
af80: 20 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61     sizeOfConstra
af90: 69 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d  intUsageType = M
afa0: 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79  arshal.SizeOf(ty
afb0: 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
afc0: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
afd0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
afe0: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
aff0: 69 6e 74 5f 75 73 61 67 65 29 29 3b 0d 0a 20 20  int_usage));..  
b000: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b010: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
b060: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b070: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
b080: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 61 6c 6c   Attempts to all
b090: 6f 63 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61  ocate and initia
b0a0: 6c 69 7a 65 20 61 20 6e 61 74 69 76 65 0d 0a 20  lize a native.. 
b0b0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
b0c0: 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
b0d0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
b0e0: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e  3_index_info" />
b0f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
b100: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
b110: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b120: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
b130: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73  aram name="nCons
b140: 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  traint">..      
b150: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
b160: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
b170: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
b180: 61 69 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63  aint" /> instanc
b190: 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  es to..        /
b1a0: 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20  // pre-allocate 
b1b0: 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20  space for...    
b1c0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b1d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
b1e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65  aram name="nOrde
b1f0: 72 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rBy">..        /
b200: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
b210: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
b220: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20  teIndexOrderBy" 
b230: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
b240: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
b250: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
b260: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
b270: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
b280: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
b290: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
b2a0: 68 65 20 6e 65 77 6c 79 20 61 6c 6c 6f 63 61 74  he newly allocat
b2b0: 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  ed native..     
b2c0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
b2d0: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
b2e0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
b2f0: 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 20 73 74 72  dex_info" /> str
b300: 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ucture..        
b310: 2f 2f 2f 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72  /// -OR- <see cr
b320: 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22  ef="IntPtr.Zero"
b330: 20 2f 3e 20 69 66 20 69 74 20 63 6f 75 6c 64 20   /> if it could 
b340: 6e 6f 74 20 62 65 20 66 75 6c 6c 79 20 61 6c 6c  not be fully all
b350: 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
b360: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
b370: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
b380: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 41   static IntPtr A
b390: 6c 6c 6f 63 61 74 65 41 6e 64 49 6e 69 74 69 61  llocateAndInitia
b3a0: 6c 69 7a 65 4e 61 74 69 76 65 28 0d 0a 20 20 20  lizeNative(..   
b3b0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f           int nCo
b3c0: 6e 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20  nstraint,..     
b3d0: 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65         int nOrde
b3e0: 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
b3f0: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
b400: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
b410: 72 20 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74  r pIndex = IntPt
b420: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
b430: 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 66       IntPtr pInf
b440: 6f 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  o = IntPtr.Zero;
b450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
b460: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
b470: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
b480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
b490: 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 49  Ptr pOrderBy = I
b4a0: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
b4b0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
b4c0: 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
b4d0: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
b4e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
b4f0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
b500: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b510: 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 49 6e 66     int sizeOfInf
b520: 6f 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  oType;..        
b530: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
b540: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 3b 0d 0a  OfOrderByType;..
b550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b560: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
b570: 61 69 6e 74 54 79 70 65 3b 0d 0a 20 20 20 20 20  aintType;..     
b580: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
b590: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
b5a0: 73 61 67 65 54 79 70 65 3b 0d 0a 0d 0a 20 20 20  sageType;....   
b5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 69 7a               Siz
b5c0: 65 4f 66 4e 61 74 69 76 65 28 6f 75 74 20 73 69  eOfNative(out si
b5d0: 7a 65 4f 66 49 6e 66 6f 54 79 70 65 2c 20 6f 75  zeOfInfoType, ou
b5e0: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
b5f0: 6e 74 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20  ntType,..       
b600: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
b610: 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79   sizeOfOrderByTy
b620: 70 65 2c 20 6f 75 74 20 73 69 7a 65 4f 66 43 6f  pe, out sizeOfCo
b630: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
b640: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
b650: 20 20 20 20 20 20 20 69 66 20 28 28 73 69 7a 65         if ((size
b660: 4f 66 49 6e 66 6f 54 79 70 65 20 3e 20 30 29 20  OfInfoType > 0) 
b670: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
b680: 20 20 20 20 20 20 20 20 28 73 69 7a 65 4f 66 43          (sizeOfC
b690: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3e 20  onstraintType > 
b6a0: 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  0) &&..         
b6b0: 20 20 20 20 20 20 20 20 20 20 20 28 73 69 7a 65             (size
b6c0: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3e 20  OfOrderByType > 
b6d0: 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  0) &&..         
b6e0: 20 20 20 20 20 20 20 20 20 20 20 28 73 69 7a 65             (size
b6f0: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
b700: 65 54 79 70 65 20 3e 20 30 29 29 0d 0a 20 20 20  eType > 0))..   
b710: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
b720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b730: 20 20 20 20 70 49 6e 66 6f 20 3d 20 53 51 4c 69      pInfo = SQLi
b740: 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
b750: 65 28 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65  e(sizeOfInfoType
b760: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b770: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74            pConst
b780: 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 65  raint = SQLiteMe
b790: 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a  mory.Allocate(..
b7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7b0: 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f          sizeOfCo
b7c0: 6e 73 74 72 61 69 6e 74 54 79 70 65 20 2a 20 6e  nstraintType * n
b7d0: 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a  Constraint);....
b7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7f0: 20 20 20 20 70 4f 72 64 65 72 42 79 20 3d 20 53      pOrderBy = S
b800: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
b810: 63 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  cate(..         
b820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
b830: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
b840: 20 2a 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d   * nOrderBy);...
b850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b860: 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74       pConstraint
b870: 55 73 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 65  Usage = SQLiteMe
b880: 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a  mory.Allocate(..
b890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8a0: 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f          sizeOfCo
b8b0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
b8c0: 65 20 2a 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29  e * nConstraint)
b8d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b8e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70 49           if ((pI
b8f0: 6e 66 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  nfo != IntPtr.Ze
b900: 72 6f 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ro) &&..        
b910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b920: 28 70 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20  (pConstraint != 
b930: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d  IntPtr.Zero) &&.
b940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b950: 20 20 20 20 20 20 20 20 20 28 70 4f 72 64 65 72           (pOrder
b960: 42 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  By != IntPtr.Zer
b970: 6f 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  o) &&..         
b980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
b990: 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
b9a0: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
b9b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
b9c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9e0: 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30    int offset = 0
b9f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ba00: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
ba10: 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
ba20: 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
ba30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba40: 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65      pInfo, offse
ba50: 74 2c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b  t, nConstraint);
ba60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ba70: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
ba80: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
ba90: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
baa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
bac0: 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
bad0: 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  ), IntPtr.Size);
bae0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
bb00: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
bb10: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
bb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb30: 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65      pInfo, offse
bb40: 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e 74 29 3b  t, pConstraint);
bb50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
bb60: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
bb70: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
bb80: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
bb90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
bbb0: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
bbc0: 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  e, sizeof(int));
bbd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
bbe0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
bbf0: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
bc00: 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20  nt32(..         
bc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc20: 20 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74     pInfo, offset
bc30: 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a  , nOrderBy);....
bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc50: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
bc60: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
bc70: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
bc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc90: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
bca0: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49  , sizeof(int), I
bcb0: 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
bcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcd0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
bce0: 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74  rshal.WriteIntPt
bcf0: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd10: 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 70  pInfo, offset, p
bd20: 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20  OrderBy);....   
bd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd40: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
bd50: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
bd60: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
bd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd80: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
bd90: 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50  ntPtr.Size, IntP
bda0: 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
bdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdc0: 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
bdd0: 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 0d  al.WriteIntPtr(.
bde0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
be00: 66 6f 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f 6e  fo, offset, pCon
be10: 73 74 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a  straintUsage);..
be20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be30: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
be40: 20 3d 20 70 49 6e 66 6f 3b 20 2f 2a 20 4e 4f 54   = pInfo; /* NOT
be50: 45 3a 20 53 75 63 63 65 73 73 2e 20 2a 2f 0d 0a  E: Success. */..
be60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be70: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
be80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
be90: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
bea0: 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
beb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
bec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
bed0: 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74  (pIndex == IntPt
bee0: 72 2e 5a 65 72 6f 29 20 2f 2a 20 4e 4f 54 45 3a  r.Zero) /* NOTE:
bef0: 20 46 61 69 6c 75 72 65 3f 20 2a 2f 0d 0a 20 20   Failure? */..  
bf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
bf10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bf20: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 73 74 72       if (pConstr
bf30: 61 69 6e 74 55 73 61 67 65 20 21 3d 20 49 6e 74  aintUsage != Int
bf40: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
bf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
bf60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf70: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
bf80: 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e  Memory.Free(pCon
bf90: 73 74 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a  straintUsage);..
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfb0: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
bfc0: 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74  intUsage = IntPt
bfd0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
bfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
bff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c000: 20 20 20 20 20 20 69 66 20 28 70 4f 72 64 65 72        if (pOrder
c010: 42 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  By != IntPtr.Zer
c020: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
c030: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c050: 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
c060: 46 72 65 65 28 70 4f 72 64 65 72 42 79 29 3b 0d  Free(pOrderBy);.
c070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c080: 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72 42           pOrderB
c090: 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  y = IntPtr.Zero;
c0a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c0b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c0d0: 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 20 21  f (pConstraint !
c0e0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
c0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c100: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c120: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
c130: 28 70 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a  (pConstraint);..
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
c160: 69 6e 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  int = IntPtr.Zer
c170: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
c180: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1a0: 20 69 66 20 28 70 49 6e 66 6f 20 21 3d 20 49 6e   if (pInfo != In
c1b0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
c1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c1e0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
c1f0: 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 49 6e  eMemory.Free(pIn
c200: 66 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fo);..          
c210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c220: 6e 66 6f 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  nfo = IntPtr.Zer
c230: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
c240: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c250: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c260: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
c270: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c280: 6e 20 70 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  n pIndex;..     
c290: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
c2f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c300: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72  ..        /// Fr
c310: 65 65 73 20 61 6c 6c 20 74 68 65 20 6d 65 6d 6f  ees all the memo
c320: 72 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ry associated wi
c330: 74 68 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20  th a native..   
c340: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
c350: 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
c360: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
c370: 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a  index_info" />..
c380: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
c390: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
c3a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c3b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
c3c0: 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
c3d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
c3e0: 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
c3f0: 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20  r to the native 
c400: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
c410: 66 6f 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d  fo structure to.
c420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 65  .        /// fre
c430: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
c440: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
c450: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c460: 20 76 6f 69 64 20 46 72 65 65 4e 61 74 69 76 65   void FreeNative
c470: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
c480: 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
c490: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
c4a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c4b0: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d      if (pIndex =
c4c0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4e0: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
c4f0: 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
c500: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
c510: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c520: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c530: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c540: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c550: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
c560: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
c570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
c580: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
c590: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
c5a0: 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c5c0: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
c5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
c5e0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
c5f0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
c600: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
c610: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
c620: 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28  tr.Size, sizeof(
c630: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
c640: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c650: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c660: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c670: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c680: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
c690: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
c6a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
c6b0: 74 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20  tPtr pOrderBy = 
c6c0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
c6d0: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
c6e0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
c6f0: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
c700: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
c710: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
c720: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
c730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c740: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
c750: 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a  Size, IntPtr.Siz
c760: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
c770: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
c780: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c  raintUsage = SQL
c790: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
c7a0: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
c7b0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
c7c0: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
c7d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
c7e0: 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20  straintUsage != 
c7f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
c800: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
c820: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
c830: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29  ConstraintUsage)
c840: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c850: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
c860: 61 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  age = IntPtr.Zer
c870: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
c880: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
c890: 20 69 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d   if (pOrderBy !=
c8a0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
c8b0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
c8d0: 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28  LiteMemory.Free(
c8e0: 70 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20  pOrderBy);..    
c8f0: 20 20 20 20 20 20 20 20 20 20 20 20 70 4f 72 64              pOrd
c900: 65 72 42 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65  erBy = IntPtr.Ze
c910: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
c920: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c930: 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e    if (pConstrain
c940: 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t != IntPtr.Zero
c950: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
c960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c970: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
c980: 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 29  ree(pConstraint)
c990: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c9a0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d     pConstraint =
c9b0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
c9c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c9e0: 70 49 6e 64 65 78 20 21 3d 20 49 6e 74 50 74 72  pIndex != IntPtr
c9f0: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
ca00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ca10: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
ca20: 6f 72 79 2e 46 72 65 65 28 70 49 6e 64 65 78 29  ory.Free(pIndex)
ca30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ca40: 20 20 20 70 49 6e 64 65 78 20 3d 20 49 6e 74 50     pIndex = IntP
ca50: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
ca60: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ca70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
ca80: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ca90: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
caa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
cae0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
caf0: 65 72 6e 61 6c 20 4d 61 72 73 68 61 6c 20 48 65  ernal Marshal He
cb00: 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
cb10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
cb20: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
cb30: 20 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69   Converts a nati
cb40: 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
cb50: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
cb60: 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
cb70: 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
cb80: 20 69 6e 74 6f 20 61 20 6e 65 77 20 3c 73 65 65   into a new <see
cb90: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
cba0: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
cbb0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
cbc0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
cbd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
cbe0: 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78  ram name="pIndex
cbf0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
cc00: 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
cc10: 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65  er to the native
cc20: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
cc30: 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 74 6f  nfo structure to
cc40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
cc50: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
cc60: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
cc70: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
cc80: 20 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65 4f 75   name="includeOu
cc90: 74 70 75 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  tput">..        
cca0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20  /// Non-zero to 
ccb0: 69 6e 63 6c 75 64 65 20 66 69 65 6c 64 73 20 66  include fields f
ccc0: 72 6f 6d 20 74 68 65 20 6f 75 74 70 75 74 73 20  rom the outputs 
ccd0: 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e  portion of the n
cce0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
ccf0: 2f 2f 20 73 74 72 75 63 74 75 72 65 3b 20 6f 74  // structure; ot
cd00: 68 65 72 77 69 73 65 2c 20 74 68 65 20 22 6f 75  herwise, the "ou
cd10: 74 70 75 74 22 20 66 69 65 6c 64 73 20 77 69 6c  tput" fields wil
cd20: 6c 20 6e 6f 74 20 62 65 20 72 65 61 64 2e 0d 0a  l not be read...
cd30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
cd40: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
cd50: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
cd60: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
cd70: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
cd80: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
cd90: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
cda0: 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
cdb0: 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20   newly..        
cdc0: 2f 2f 2f 20 63 72 65 61 74 65 64 20 3c 73 65 65  /// created <see
cdd0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
cde0: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
cdf0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
ce00: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
ce10: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
ce20: 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 6f 6d  static void From
ce30: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
ce40: 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
ce50: 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex,..           
ce60: 20 62 6f 6f 6c 20 69 6e 63 6c 75 64 65 4f 75 74   bool includeOut
ce70: 70 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  put,..          
ce80: 20 20 72 65 66 20 53 51 4c 69 74 65 49 6e 64 65    ref SQLiteInde
ce90: 78 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20  x index..       
cea0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
ceb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
cec0: 66 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74  f (pIndex == Int
ced0: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
cee0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cef0: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
cf00: 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30    int offset = 0
cf10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cf20: 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
cf30: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
cf40: 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20  .ReadInt32(..   
cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
cf60: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
cf70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
cf80: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
cf90: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
cfa0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
cfb0: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
cfc0: 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
cfd0: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
cfe0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
cff0: 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65  straint = SQLite
d000: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
d010: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
d020: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
d030: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
d040: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
d050: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
d060: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
d070: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
d080: 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
d090: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
d0a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
d0b0: 20 6e 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69   nOrderBy = SQLi
d0c0: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
d0d0: 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t32(..          
d0e0: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
d0f0: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
d100: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
d110: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
d120: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
d130: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d140: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
d150: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
d160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
d170: 74 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20  tPtr pOrderBy = 
d180: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
d190: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
d1a0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d1b0: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
d1c0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
d1d0: 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r pConstraintUsa
d1e0: 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ge = IntPtr.Zero
d1f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d200: 20 69 66 20 28 69 6e 63 6c 75 64 65 4f 75 74 70   if (includeOutp
d210: 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ut)..           
d220: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d230: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
d240: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
d250: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
d260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
d270: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
d280: 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  e, IntPtr.Size);
d290: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d2a0: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55      pConstraintU
d2b0: 73 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 61 72  sage = SQLiteMar
d2c0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
d2d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d2e0: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
d2f0: 66 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  fset);..        
d300: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
d310: 20 20 20 20 20 69 6e 64 65 78 20 3d 20 6e 65 77       index = new
d320: 20 53 51 4c 69 74 65 49 6e 64 65 78 28 6e 43 6f   SQLiteIndex(nCo
d330: 6e 73 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72  nstraint, nOrder
d340: 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  By);..          
d350: 20 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70    SQLiteIndexInp
d360: 75 74 73 20 69 6e 70 75 74 73 20 3d 20 69 6e 64  uts inputs = ind
d370: 65 78 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a 20 20  ex.Inputs;....  
d380: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
d390: 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  puts == null).. 
d3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
d3b0: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
d3c0: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
d3d0: 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f  xConstraint[] co
d3e0: 6e 73 74 72 61 69 6e 74 73 20 3d 20 69 6e 70 75  nstraints = inpu
d3f0: 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 3b 0d  ts.Constraints;.
d400: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
d410: 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d  f (constraints =
d420: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d430: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
d440: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d450: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
d460: 42 79 5b 5d 20 6f 72 64 65 72 42 79 73 20 3d 20  By[] orderBys = 
d470: 69 6e 70 75 74 73 2e 4f 72 64 65 72 42 79 73 3b  inputs.OrderBys;
d480: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d490: 69 66 20 28 6f 72 64 65 72 42 79 73 20 3d 3d 20  if (orderBys == 
d4a0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
d4b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
d4c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79  ..            Ty
d4d0: 70 65 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70  pe constraintTyp
d4e0: 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20  e = typeof(..   
d4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
d500: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
d510: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
d520: 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20  onstraint);.... 
d530: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
d540: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54  izeOfConstraintT
d550: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
d560: 7a 65 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  zeOf(..         
d570: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
d580: 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  tType);....     
d590: 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
d5a0: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b  iConstraint = 0;
d5b0: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e   iConstraint < n
d5c0: 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e  Constraint; iCon
d5d0: 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20  straint++)..    
d5e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d5f0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
d600: 72 20 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69  r pOffset = SQLi
d610: 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72  teMarshal.IntPtr
d620: 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20  ForOffset(..    
d630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d640: 70 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f  pConstraint, iCo
d650: 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f  nstraint * sizeO
d660: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29  fConstraintType)
d670: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d680: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
d690: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
d6a0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
d6b0: 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a  t constraint =..
d6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6d0: 20 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76      (UnsafeNativ
d6e0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
d6f0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
d700: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
d710: 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
d720: 68 61 6c 2e 50 74 72 54 6f 53 74 72 75 63 74 75  hal.PtrToStructu
d730: 72 65 28 70 4f 66 66 73 65 74 2c 20 63 6f 6e 73  re(pOffset, cons
d740: 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a  traintType);....
d750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d760: 63 6f 6e 73 74 72 61 69 6e 74 73 5b 69 43 6f 6e  constraints[iCon
d770: 73 74 72 61 69 6e 74 5d 20 3d 20 6e 65 77 20 53  straint] = new S
d780: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
d790: 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
d7a0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
d7b0: 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  raint);..       
d7c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d7d0: 20 20 20 20 20 20 54 79 70 65 20 6f 72 64 65 72        Type order
d7e0: 42 79 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28  ByType = typeof(
d7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d800: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
d810: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
d820: 64 65 78 5f 6f 72 64 65 72 62 79 29 3b 0d 0a 0d  dex_orderby);...
d830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
d840: 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79   sizeOfOrderByTy
d850: 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a  pe = Marshal.Siz
d860: 65 4f 66 28 6f 72 64 65 72 42 79 54 79 70 65 29  eOf(orderByType)
d870: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d880: 20 66 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72   for (int iOrder
d890: 42 79 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79  By = 0; iOrderBy
d8a0: 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72   < nOrderBy; iOr
d8b0: 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20  derBy++)..      
d8c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d8d0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
d8e0: 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65  pOffset = SQLite
d8f0: 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f  Marshal.IntPtrFo
d900: 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
d910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f                pO
d920: 72 64 65 72 42 79 2c 20 69 4f 72 64 65 72 42 79  rderBy, iOrderBy
d930: 20 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79   * sizeOfOrderBy
d940: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
d950: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
d960: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
d970: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
d980: 72 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a 20  rby orderBy =.. 
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9a0: 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65     (UnsafeNative
d9b0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
d9c0: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 0d 0a  index_orderby)..
d9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9e0: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
d9f0: 50 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70  PtrToStructure(p
da00: 4f 66 66 73 65 74 2c 20 6f 72 64 65 72 42 79 54  Offset, orderByT
da10: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
da20: 20 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79           orderBy
da30: 73 5b 69 4f 72 64 65 72 42 79 5d 20 3d 20 6e 65  s[iOrderBy] = ne
da40: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  w SQLiteIndexOrd
da50: 65 72 42 79 28 6f 72 64 65 72 42 79 29 3b 0d 0a  erBy(orderBy);..
da60: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
da70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
da80: 28 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 29 0d  (includeOutput).
da90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dab0: 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
dac0: 74 73 20 6f 75 74 70 75 74 73 20 3d 20 69 6e 64  ts outputs = ind
dad0: 65 78 2e 4f 75 74 70 75 74 73 3b 0d 0a 0d 0a 20  ex.Outputs;.... 
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
daf0: 66 20 28 6f 75 74 70 75 74 73 20 3d 3d 20 6e 75  f (outputs == nu
db00: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
db10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
db20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
db30: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
db40: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
db50: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
db60: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
db70: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
db80: 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  .ConstraintUsage
db90: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
dba0: 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72        if (constr
dbb0: 61 69 6e 74 55 73 61 67 65 73 20 3d 3d 20 6e 75  aintUsages == nu
dbc0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
dbd0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
dbe0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dbf0: 20 20 20 20 54 79 70 65 20 63 6f 6e 73 74 72 61      Type constra
dc00: 69 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 74  intUsageType = t
dc10: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
dc20: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
dc30: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
dc40: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
dc50: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 29 3b  nstraint_usage);
dc60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dc70: 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f      int sizeOfCo
dc80: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
dc90: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
dca0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
dcb0: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
dcc0: 69 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a  intUsageType);..
dcd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dce0: 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73    for (int iCons
dcf0: 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e  traint = 0; iCon
dd00: 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74  straint < nConst
dd10: 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69  raint; iConstrai
dd20: 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20  nt++)..         
dd30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
dd50: 74 50 74 72 20 70 4f 66 66 73 65 74 20 3d 20 53  tPtr pOffset = S
dd60: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74  QLiteMarshal.Int
dd70: 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20  PtrForOffset(.. 
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd90: 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69         pConstrai
dda0: 6e 74 55 73 61 67 65 2c 20 69 43 6f 6e 73 74 72  ntUsage, iConstr
ddb0: 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e  aint * sizeOfCon
ddc0: 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65  straintUsageType
ddd0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
dde0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
ddf0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
de00: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
de10: 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e  traint_usage con
de20: 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a  straintUsage =..
de30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de40: 20 20 20 20 20 20 20 20 28 55 6e 73 61 66 65 4e          (UnsafeN
de50: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
de60: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
de70: 72 61 69 6e 74 5f 75 73 61 67 65 29 0d 0a 20 20  raint_usage)..  
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de90: 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
dea0: 6c 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72 65  l.PtrToStructure
deb0: 28 70 4f 66 66 73 65 74 2c 20 63 6f 6e 73 74 72  (pOffset, constr
dec0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d  aintUsageType);.
ded0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dee0: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
def0: 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61  tUsages[iConstra
df00: 69 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74  int] = new SQLit
df10: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
df20: 55 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20  Usage(..        
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df40: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29  constraintUsage)
df50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
df60: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
df70: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
df80: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
df90: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
dfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfb0: 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72    offset, IntPtr
dfc0: 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e  .Size, sizeof(in
dfd0: 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
dfe0: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
dff0: 49 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20 53 51  IndexNumber = SQ
e000: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
e010: 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
e020: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
e030: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
e060: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
e070: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
e080: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
e090: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49  , sizeof(int), I
e0a0: 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0c0: 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 53 74 72  outputs.IndexStr
e0d0: 69 6e 67 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ing = SQLiteStri
e0e0: 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng.StringFromUtf
e0f0: 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  8IntPtr(..      
e100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
e110: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
e120: 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f  IntPtr(pIndex, o
e130: 66 66 73 65 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  ffset));....    
e140: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
e150: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
e160: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
e170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e180: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
e190: 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f  tPtr.Size, sizeo
e1a0: 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
e1b0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
e1c0: 75 74 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e  uts.NeedToFreeIn
e1d0: 64 65 78 53 74 72 69 6e 67 20 3d 20 53 51 4c 69  dexString = SQLi
e1e0: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
e1f0: 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t32(..          
e200: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
e210: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
e220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
e230: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e240: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
e250: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
e260: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
e270: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a  sizeof(int), siz
e280: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
e290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
e2a0: 74 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e  tputs.OrderByCon
e2b0: 73 75 6d 65 64 20 3d 20 53 51 4c 69 74 65 4d 61  sumed = SQLiteMa
e2c0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
e2d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e2e0: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
e2f0: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
e300: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
e310: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
e320: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
e330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e340: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
e350: 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28  of(int), sizeof(
e360: 64 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20  double));....   
e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
e380: 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f  puts.EstimatedCo
e390: 73 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  st = SQLiteMarsh
e3a0: 61 6c 2e 52 65 61 64 44 6f 75 62 6c 65 28 0d 0a  al.ReadDouble(..
e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3c0: 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73      pIndex, offs
e3d0: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
e3e0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
e3f0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
e400: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
e410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e420: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
e430: 28 64 6f 75 62 6c 65 29 2c 20 73 69 7a 65 6f 66  (double), sizeof
e440: 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20  (long));....    
e450: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e460: 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73  outputs.CanUseEs
e470: 74 69 6d 61 74 65 64 52 6f 77 73 28 29 29 0d 0a  timatedRows())..
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e490: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e4a0: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45         outputs.E
e4b0: 73 74 69 6d 61 74 65 64 52 6f 77 73 20 3d 20 53  stimatedRows = S
e4c0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
e4d0: 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  dInt64(..       
e4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4f0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
e500: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e510: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e520: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
e530: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
e540: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
e550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e560: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
e570: 28 6c 6f 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69  (long), sizeof(i
e580: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
e590: 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74           if (out
e5a0: 70 75 74 73 2e 43 61 6e 55 73 65 49 6e 64 65 78  puts.CanUseIndex
e5b0: 46 6c 61 67 73 28 29 29 0d 0a 20 20 20 20 20 20  Flags())..      
e5c0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5e0: 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 46 6c   outputs.IndexFl
e5f0: 61 67 73 20 3d 20 28 53 51 4c 69 74 65 49 6e 64  ags = (SQLiteInd
e600: 65 78 46 6c 61 67 73 29 0d 0a 20 20 20 20 20 20  exFlags)..      
e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e620: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
e630: 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78  ReadInt32(pIndex
e640: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20  , offset);..    
e650: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
e660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e670: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
e680: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
e690: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
e6a0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
e6b0: 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
e6c0: 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a  sizeof(long));..
e6d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e6e0: 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
e6f0: 6e 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65 64 28  nUseColumnsUsed(
e700: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
e710: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e720: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
e730: 74 73 2e 43 6f 6c 75 6d 6e 73 55 73 65 64 20 3d  ts.ColumnsUsed =
e740: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
e750: 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20  eadInt64(..     
e760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e770: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
e780: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
e790: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e7a0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
e7b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
e7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e800: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
e810: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e820: 20 20 20 20 20 20 2f 2f 2f 20 50 6f 70 75 6c 61        /// Popula
e830: 74 65 73 20 74 68 65 20 6f 75 74 70 75 74 73 20  tes the outputs 
e840: 6f 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61 74  of a pre-allocat
e850: 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  ed native sqlite
e860: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20  3_index_info..  
e870: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
e880: 75 72 65 20 75 73 69 6e 67 20 61 6e 20 65 78 69  ure using an exi
e890: 73 74 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d  sting <see cref=
e8a0: 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e  "SQLiteIndex" />
e8b0: 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
e8c0: 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   /// instance...
e8d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
e8e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e8f0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
e900: 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  "index">..      
e910: 20 20 2f 2f 2f 20 54 68 65 20 65 78 69 73 74 69    /// The existi
e920: 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ng <see cref="SQ
e930: 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62  LiteIndex" /> ob
e940: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
e950: 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
e960: 20 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74    /// the output
e970: 20 64 61 74 61 20 74 6f 20 75 73 65 2e 0d 0a 20   data to use... 
e980: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
e990: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
e9a0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49   <param name="pI
e9b0: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
e9c0: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
e9d0: 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 70 72  ointer to the pr
e9e0: 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69  e-allocated nati
e9f0: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
ea00: 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f  _info..        /
ea10: 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
ea20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
ea30: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
ea40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
ea50: 63 6c 75 64 65 49 6e 70 75 74 22 3e 0d 0a 20 20  cludeInput">..  
ea60: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
ea70: 72 6f 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 69  ro to include fi
ea80: 65 6c 64 73 20 66 72 6f 6d 20 74 68 65 20 69 6e  elds from the in
ea90: 70 75 74 73 20 70 6f 72 74 69 6f 6e 20 6f 66 20  puts portion of 
eaa0: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
eab0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
eac0: 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68  e; otherwise, th
ead0: 65 20 22 69 6e 70 75 74 22 20 66 69 65 6c 64 73  e "input" fields
eae0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 77 72 69   will not be wri
eaf0: 74 74 65 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tten...        /
eb00: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
eb10: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
eb20: 61 74 69 63 20 76 6f 69 64 20 54 6f 49 6e 74 50  atic void ToIntP
eb30: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
eb40: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
eb50: 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex,..           
eb60: 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 2c 0d   IntPtr pIndex,.
eb70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
eb80: 6c 20 69 6e 63 6c 75 64 65 49 6e 70 75 74 0d 0a  l includeInput..
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
eba0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ebb0: 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20        if (index 
ebc0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
ebd0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ebe0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ebf0: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70   SQLiteIndexOutp
ec00: 75 74 73 20 6f 75 74 70 75 74 73 20 3d 20 69 6e  uts outputs = in
ec10: 64 65 78 2e 4f 75 74 70 75 74 73 3b 0d 0a 0d 0a  dex.Outputs;....
ec20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ec30: 6f 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29  outputs == null)
ec40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ec50: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
ec60: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
ec70: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
ec80: 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74  age[] constraint
ec90: 55 73 61 67 65 73 20 3d 0d 0a 20 20 20 20 20 20  Usages =..      
eca0: 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
ecb0: 73 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  s.ConstraintUsag
ecc0: 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  es;....         
ecd0: 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e     if (constrain
ece0: 74 55 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29  tUsages == null)
ecf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ed00: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
ed10: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
ed20: 6e 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75 74  ndexInputs input
ed30: 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  s = null;..     
ed40: 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
ed50: 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63  exConstraint[] c
ed60: 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 75 6c  onstraints = nul
ed70: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
ed80: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
ed90: 42 79 5b 5d 20 6f 72 64 65 72 42 79 73 20 3d 20  By[] orderBys = 
eda0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
edb0: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
edc0: 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20  Input)..        
edd0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ede0: 20 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20         inputs = 
edf0: 69 6e 64 65 78 2e 49 6e 70 75 74 73 3b 0d 0a 0d  index.Inputs;...
ee00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ee10: 20 69 66 20 28 69 6e 70 75 74 73 20 3d 3d 20 6e   if (inputs == n
ee20: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
ee30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ee40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ee50: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73       constraints
ee60: 20 3d 20 69 6e 70 75 74 73 2e 43 6f 6e 73 74 72   = inputs.Constr
ee70: 61 69 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  aints;....      
ee80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
ee90: 6e 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c  nstraints == nul
eea0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
eeb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
eec0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
eed0: 20 20 20 6f 72 64 65 72 42 79 73 20 3d 20 69 6e     orderBys = in
eee0: 70 75 74 73 2e 4f 72 64 65 72 42 79 73 3b 0d 0a  puts.OrderBys;..
eef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef00: 20 20 69 66 20 28 6f 72 64 65 72 42 79 73 20 3d    if (orderBys =
ef10: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
ef30: 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  urn;..          
ef40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ef50: 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d     if (pIndex ==
ef60: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
ef70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
ef80: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
ef90: 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74        int offset
efa0: 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
efb0: 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72       int nConstr
efc0: 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  aint = SQLiteMar
efd0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70  shal.ReadInt32(p
efe0: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
eff0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
f000: 66 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 20  f (includeInput 
f010: 26 26 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20  && (nConstraint 
f020: 21 3d 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 4c  != constraints.L
f030: 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20  ength))..       
f040: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
f050: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f060: 69 66 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20  if (nConstraint 
f070: 21 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  != constraintUsa
f080: 67 65 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20  ges.Length)..   
f090: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f0a0: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
f0b0: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
f0c0: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
f0d0: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
f0e0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
f0f0: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49  , sizeof(int), I
f100: 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
f110: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f120: 69 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20  includeInput).. 
f130: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
f150: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
f160: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
f170: 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
f180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f190: 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
f1a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
f1b0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
f1c0: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d  ConstraintType =
f1d0: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
f1e0: 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20  typeof(..       
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
f200: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
f210: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
f220: 6f 6e 73 74 72 61 69 6e 74 29 29 3b 0d 0a 0d 0a  onstraint));....
f230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f240: 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72  for (int iConstr
f250: 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74  aint = 0; iConst
f260: 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61  raint < nConstra
f270: 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  int; iConstraint
f280: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
f290: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
f2b0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
f2c0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
f2d0: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
f2e0: 69 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  int =..         
f2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
f300: 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
f310: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
f320: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28  ndex_constraint(
f330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
f350: 6e 73 74 72 61 69 6e 74 73 5b 69 43 6f 6e 73 74  nstraints[iConst
f360: 72 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20  raint]);....    
f370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f380: 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75 72  Marshal.Structur
f390: 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20 20  eToPtr(..       
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3b0: 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 53 51 4c   constraint, SQL
f3c0: 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74  iteMarshal.IntPt
f3d0: 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20  rForOffset(..   
f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3f0: 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74       pConstraint
f400: 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20  , iConstraint * 
f410: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
f420: 54 79 70 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  Type),..        
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f440: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
f450: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f460: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f470: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
f480: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f490: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
f4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f4b0: 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
f4c0: 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29  ze, sizeof(int))
f4d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f4e0: 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d 20   int nOrderBy = 
f4f0: 69 6e 63 6c 75 64 65 49 6e 70 75 74 20 3f 0d 0a  includeInput ?..
f500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f510: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
f520: 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20  adInt32(pIndex, 
f530: 6f 66 66 73 65 74 29 20 3a 20 30 3b 0d 0a 0d 0a  offset) : 0;....
f540: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f550: 69 6e 63 6c 75 64 65 49 6e 70 75 74 20 26 26 20  includeInput && 
f560: 28 6e 4f 72 64 65 72 42 79 20 21 3d 20 6f 72 64  (nOrderBy != ord
f570: 65 72 42 79 73 2e 4c 65 6e 67 74 68 29 29 0d 0a  erBys.Length))..
f580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f590: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
f5a0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
f5b0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
f5c0: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
f5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
f5e0: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
f5f0: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d  , IntPtr.Size);.
f600: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
f610: 66 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 29  f (includeInput)
f620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
f630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f640: 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42 79   IntPtr pOrderBy
f650: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
f660: 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64  .ReadIntPtr(pInd
f670: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
f680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f690: 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65 72 42  int sizeOfOrderB
f6a0: 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e  yType = Marshal.
f6b0: 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a  SizeOf(typeof(..
f6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6d0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
f6e0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
f6f0: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 29 3b  index_orderby));
f700: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f710: 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 4f 72      for (int iOr
f720: 64 65 72 42 79 20 3d 20 30 3b 20 69 4f 72 64 65  derBy = 0; iOrde
f730: 72 42 79 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20  rBy < nOrderBy; 
f740: 69 4f 72 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20  iOrderBy++)..   
f750: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f770: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
f780: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
f790: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72  index_orderby or
f7a0: 64 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20  derBy =..       
f7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7c0: 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
f7d0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
f7e0: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d  _index_orderby(.
f7f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f800: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 64               ord
f810: 65 72 42 79 73 5b 69 4f 72 64 65 72 42 79 5d 29  erBys[iOrderBy])
f820: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f830: 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
f840: 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28  .StructureToPtr(
f850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f860: 20 20 20 20 20 20 20 20 20 20 6f 72 64 65 72 42            orderB
f870: 79 2c 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  y, SQLiteMarshal
f880: 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  .IntPtrForOffset
f890: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f8a0: 20 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65             pOrde
f8b0: 72 42 79 2c 20 69 4f 72 64 65 72 42 79 20 2a 20  rBy, iOrderBy * 
f8c0: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
f8d0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c               fal
f8f0: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
f900: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f910: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f920: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
f930: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
f940: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
f950: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
f960: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
f970: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
f980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
f990: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
f9a0: 55 73 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 61  Usage = SQLiteMa
f9b0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
f9c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f9d0: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
f9e0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
f9f0: 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e     int sizeOfCon
fa00: 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65  straintUsageType
fa10: 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
fa20: 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
fa30: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
fa40: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
fa50: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
fa60: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 29 29 3b  straint_usage));
fa70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fa80: 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72  for (int iConstr
fa90: 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74  aint = 0; iConst
faa0: 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61  raint < nConstra
fab0: 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  int; iConstraint
fac0: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
fad0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fae0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
faf0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
fb00: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
fb10: 5f 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e  _usage constrain
fb20: 74 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20  tUsage =..      
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
fb40: 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
fb50: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
fb60: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
fb70: 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
fb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
fb90: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b  onstraintUsages[
fba0: 69 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a  iConstraint]);..
fbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fbc0: 20 20 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74    Marshal.Struct
fbd0: 75 72 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20  ureToPtr(..     
fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
fbf0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20  onstraintUsage, 
fc00: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e  SQLiteMarshal.In
fc10: 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a  tPtrForOffset(..
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc30: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55      pConstraintU
fc40: 73 61 67 65 2c 20 69 43 6f 6e 73 74 72 61 69 6e  sage, iConstrain
fc50: 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  t * sizeOfConstr
fc60: 61 69 6e 74 55 73 61 67 65 54 79 70 65 29 2c 0d  aintUsageType),.
fc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fc80: 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20       false);..  
fc90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
fca0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
fcb0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
fcc0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
fcd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fce0: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
fcf0: 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
fd00: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
fd10: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
fd20: 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64  .WriteInt32(pInd
fd30: 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  ex, offset,..   
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
fd50: 70 75 74 73 2e 49 6e 64 65 78 4e 75 6d 62 65 72  puts.IndexNumber
fd60: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
fd70: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
fd80: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
fd90: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
fda0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
fdb0: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
fdc0: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
fdd0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
fde0: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
fdf0: 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  Ptr(pIndex, offs
fe00: 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
fe10: 20 20 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e       SQLiteStrin
fe20: 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
fe30: 53 74 72 69 6e 67 28 6f 75 74 70 75 74 73 2e 49  String(outputs.I
fe40: 6e 64 65 78 53 74 72 69 6e 67 29 29 3b 0d 0a 0d  ndexString));...
fe50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
fe60: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
fe70: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
fe80: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
fe90: 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
fea0: 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69  r.Size, sizeof(i
feb0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
fec0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
fed0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
fee0: 20 6a 75 73 74 20 61 6c 6c 6f 63 61 74 65 64 20   just allocated 
fef0: 74 68 65 20 49 6e 64 65 78 53 74 72 69 6e 67 20  the IndexString 
ff00: 66 69 65 6c 64 3b 20 74 68 65 72 65 66 6f 72 65  field; therefore
ff10: 2c 20 77 65 0d 0a 20 20 20 20 20 20 20 20 20 20  , we..          
ff20: 20 20 2f 2f 20 20 20 20 20 20 20 6e 65 65 64 20    //       need 
ff30: 74 6f 20 73 65 74 20 6d 61 6b 65 20 73 75 72 65  to set make sure
ff40: 20 74 68 65 20 4e 65 65 64 54 6f 46 72 65 65 49   the NeedToFreeI
ff50: 6e 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64  ndexString field
ff60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ff70: 20 20 20 20 20 20 20 69 73 20 6e 6f 6e 2d 7a 65         is non-ze
ff80: 72 6f 3b 20 68 6f 77 65 76 65 72 2c 20 77 65 20  ro; however, we 
ff90: 61 72 65 20 6e 6f 74 20 70 69 63 6b 79 20 61 62  are not picky ab
ffa0: 6f 75 74 20 74 68 65 20 65 78 61 63 74 0d 0a 20  out the exact.. 
ffb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
ffc0: 20 20 20 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20      value...    
ffd0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
ffe0: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 65 65 64          int need
fff0: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
10000 67 20 3d 20 6f 75 74 70 75 74 73 2e 4e 65 65 64  g = outputs.Need
10010 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
10020 67 20 21 3d 20 30 20 3f 0d 0a 20 20 20 20 20 20  g != 0 ?..      
10030 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
10040 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  s.NeedToFreeInde
10050 78 53 74 72 69 6e 67 20 3a 20 31 3b 0d 0a 0d 0a  xString : 1;....
10060 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
10070 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
10080 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
10090 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
100a0 20 20 20 20 20 20 6e 65 65 64 54 6f 46 72 65 65        needToFree
100b0 49 6e 64 65 78 53 74 72 69 6e 67 29 3b 0d 0a 0d  IndexString);...
100c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
100d0 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
100e0 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
100f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10100 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
10110 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69  f(int), sizeof(i
10120 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
10130 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
10140 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49  al.WriteInt32(pI
10150 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20  ndex, offset,.. 
10160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10170 75 74 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f  utputs.OrderByCo
10180 6e 73 75 6d 65 64 29 3b 0d 0a 0d 0a 20 20 20 20  nsumed);....    
10190 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
101a0 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
101b0 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
101d0 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
101e0 29 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65  ), sizeof(double
101f0 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
10200 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 45     if (outputs.E
10210 73 74 69 6d 61 74 65 64 43 6f 73 74 2e 48 61 73  stimatedCost.Has
10220 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20  Value)..        
10230 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10240 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
10250 73 68 61 6c 2e 57 72 69 74 65 44 6f 75 62 6c 65  shal.WriteDouble
10260 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c  (pIndex, offset,
10270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10280 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73        outputs.Es
10290 74 69 6d 61 74 65 64 43 6f 73 74 2e 47 65 74 56  timatedCost.GetV
102a0 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29  alueOrDefault())
102b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
102c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
102d0 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
102e0 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
102f0 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
10300 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
10310 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 73 69  zeof(double), si
10320 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a  zeof(long));....
10330 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
10340 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73  outputs.CanUseEs
10350 74 69 6d 61 74 65 64 52 6f 77 73 28 29 20 26 26  timatedRows() &&
10360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10370 20 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61    outputs.Estima
10380 74 65 64 52 6f 77 73 2e 48 61 73 56 61 6c 75 65  tedRows.HasValue
10390 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
103a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
103b0 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
103c0 57 72 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65  WriteInt64(pInde
103d0 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
103e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103f0 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65  outputs.Estimate
10400 64 52 6f 77 73 2e 47 65 74 56 61 6c 75 65 4f 72  dRows.GetValueOr
10410 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20  Default());..   
10420 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10430 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
10440 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
10450 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c  offset, sizeof(l
10480 6f 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74  ong), sizeof(int
10490 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
104a0 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43     if (outputs.C
104b0 61 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28  anUseIndexFlags(
104c0 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
104d0 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e        outputs.In
104e0 64 65 78 46 6c 61 67 73 2e 48 61 73 56 61 6c 75  dexFlags.HasValu
104f0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
10500 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10510 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
10520 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64  .WriteInt32(pInd
10530 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  ex, offset,..   
10540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10550 28 69 6e 74 29 6f 75 74 70 75 74 73 2e 49 6e 64  (int)outputs.Ind
10560 65 78 46 6c 61 67 73 2e 47 65 74 56 61 6c 75 65  exFlags.GetValue
10570 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20  OrDefault());.. 
10580 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10590 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
105a0 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
105b0 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
105c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
105d0 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
105e0 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c 6f  (int), sizeof(lo
105f0 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng));....       
10600 20 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73       if (outputs
10610 2e 43 61 6e 55 73 65 43 6f 6c 75 6d 6e 73 55 73  .CanUseColumnsUs
10620 65 64 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ed() &&..       
10630 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
10640 2e 43 6f 6c 75 6d 6e 73 55 73 65 64 2e 48 61 73  .ColumnsUsed.Has
10650 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20  Value)..        
10660 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10670 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
10680 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28  shal.WriteInt64(
10690 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
106a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
106b0 20 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c       outputs.Col
106c0 75 6d 6e 73 55 73 65 64 2e 47 65 74 56 61 6c 75  umnsUsed.GetValu
106d0 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a  eOrDefault());..
106e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
106f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10700 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
10710 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10760 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
10770 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72  on Public Proper
10780 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72  ties..        pr
10790 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
107a0 78 49 6e 70 75 74 73 20 69 6e 70 75 74 73 3b 0d  xInputs inputs;.
107b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
107c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
107d0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
107e0 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 49 6e  f="SQLiteIndexIn
107f0 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20  puts" /> object 
10800 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
10810 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
10820 20 74 68 65 20 69 6e 70 75 74 73 20 74 6f 20 74   the inputs to t
10830 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
10840 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
10850 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
10860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
10870 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
10880 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10890 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
108a0 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20  LiteIndexInputs 
108b0 49 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20  Inputs..        
108c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
108d0 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 70 75  et { return inpu
108e0 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ts; }..        }
108f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
10900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10940 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
10950 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
10960 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74  exOutputs output
10970 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s;..        /// 
10980 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
10990 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
109a0 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
109b0 78 4f 75 74 70 75 74 73 22 20 2f 3e 20 6f 62 6a  xOutputs" /> obj
109c0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
109d0 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
109e0 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 73   /// the outputs
109f0 20 66 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63   from the <see c
10a00 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
10a10 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
10a20 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  dex" />..       
10a30 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
10a40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
10a50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
10a60 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
10a70 4f 75 74 70 75 74 73 20 4f 75 74 70 75 74 73 0d  Outputs Outputs.
10a80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
10a90 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
10aa0 74 75 72 6e 20 6f 75 74 70 75 74 73 3b 20 7d 0d  turn outputs; }.
10ab0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
10ac0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
10ad0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
10ae0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
10af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
10b40 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69  #region SQLiteVi
10b50 72 74 75 61 6c 54 61 62 6c 65 20 42 61 73 65 20  rtualTable Base 
10b60 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
10b70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10b80 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
10b90 72 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65  resents a manage
10ba0 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
10bb0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20  implementation. 
10bc0 20 49 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20   It is..    /// 
10bd0 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73  not sealed and s
10be0 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73  hould be used as
10bf0 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   the base class 
10c00 66 6f 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66  for any user-def
10c10 69 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69  ined..    /// vi
10c20 72 74 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73  rtual table clas
10c30 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  ses implemented 
10c40 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e  in managed code.
10c50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
10c60 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
10c70 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72   class SQLiteVir
10c80 74 75 61 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20  tualTable :..   
10c90 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
10ca0 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44  NativeHandle, ID
10cb0 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54  isposable /* NOT
10cc0 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20   SEALED */..    
10cd0 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
10ce0 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
10cf0 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ants..        //
10d00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10d10 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64       /// The ind
10d20 65 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72  ex within the ar
10d30 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70  ray of strings p
10d40 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a  rovided to the..
10d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
10d60 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
10d70 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61  nagedModule.Crea
10d80 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20  te" /> and..    
10d90 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
10da0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
10db0 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
10dc0 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74   /> methods cont
10dd0 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  aining the..    
10de0 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20      /// name of 
10df0 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  the module imple
10e00 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72  menting this vir
10e10 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
10e20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
10e30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
10e40 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d  vate const int M
10e50 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d  oduleNameIndex =
10e60 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   0;....        /
10e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10eb0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
10ec0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
10ee0 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68   index within th
10ef0 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  e array of strin
10f00 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  gs provided to t
10f10 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
10f20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
10f30 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
10f40 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a  Create" /> and..
10f50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
10f60 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
10f70 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e  nagedModule.Conn
10f80 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20  ect" /> methods 
10f90 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a  containing the..
10fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65          /// name
10fb0 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
10fc0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73   containing this
10fd0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
10fe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
10ff0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11000 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
11010 6e 74 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49  nt DatabaseNameI
11020 6e 64 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20  ndex = 1;....   
11030 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
11040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
11080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
11090 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
110a0 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74  // The index wit
110b0 68 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66  hin the array of
110c0 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65   strings provide
110d0 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  d to the..      
110e0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
110f0 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
11100 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e  odule.Create" />
11110 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
11120 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
11130 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
11140 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  e.Connect" /> me
11150 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67  thods containing
11160 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
11170 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69  / name of the vi
11180 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
11190 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
111a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
111b0 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20  ivate const int 
111c0 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d  TableNameIndex =
111d0 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e   2;..        #en
111e0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
111f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11240 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
11250 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
11260 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
11270 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11280 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
11290 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
112a0 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
112b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
112c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
112d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
112e0 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20  guments">..     
112f0 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69     /// The origi
11300 6e 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72  nal array of str
11310 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f  ings provided to
11320 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
11330 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
11340 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
11350 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64  e.Create" /> and
11360 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11370 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
11380 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
11390 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
113a0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
113b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
113c0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56    public SQLiteV
113d0 69 72 74 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20  irtualTable(..  
113e0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
113f0 5b 5d 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  [] arguments..  
11400 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
11410 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11420 20 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e      this.argumen
11430 74 73 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d  ts = arguments;.
11440 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
11450 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
11460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
11470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
114c0 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
114d0 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
114e0 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 5b 5d  private string[]
114f0 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20   arguments;..   
11500 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11510 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
11520 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72  The original arr
11530 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
11540 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
11550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11560 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11570 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
11580 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
11590 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
115a0 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
115b0 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
115c0 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  /> methods...   
115d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
115e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
115f0 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69  lic virtual stri
11600 6e 67 5b 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a  ng[] Arguments..
11610 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11620 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
11630 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
11640 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20  turn arguments; 
11650 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
11660 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
11670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
116b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
116c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
116d0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
116e0 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70  f the module imp
116f0 6c 65 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76  lementing this v
11700 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
11710 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
11720 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
11730 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
11740 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d  ring ModuleName.
11750 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11760 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
11770 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11780 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
11790 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
117a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
117b0 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
117c0 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d  ts = Arguments;.
117d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
117e0 20 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74     if ((argument
117f0 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20  s != null) &&.. 
11800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11810 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65     (arguments.Le
11820 6e 67 74 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d  ngth > ModuleNam
11830 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20  eIndex))..      
11840 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11860 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74   return argument
11870 73 5b 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65  s[ModuleNameInde
11880 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x];..           
11890 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
118a0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
118b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
118c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
118d0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
118e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
118f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11900 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
11910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
11920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11960 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
11970 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11980 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
11990 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
119a0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73   containing this
119b0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
119c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
119d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
119e0 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
119f0 73 74 72 69 6e 67 20 44 61 74 61 62 61 73 65 4e  string DatabaseN
11a00 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ame..        {..
11a10 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
11a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
11a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a40 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
11a50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11a60 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67      string[] arg
11a70 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e  uments = Argumen
11a80 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ts;....         
11a90 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75         if ((argu
11aa0 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26  ments != null) &
11ab0 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
11ac0 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74         (argument
11ad0 73 2e 4c 65 6e 67 74 68 20 3e 20 44 61 74 61 62  s.Length > Datab
11ae0 61 73 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a  aseNameIndex))..
11af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11b10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72         return ar
11b20 67 75 6d 65 6e 74 73 5b 44 61 74 61 62 61 73 65  guments[Database
11b30 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20  NameIndex];..   
11b40 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b60 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
11b70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11b80 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11b90 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
11ba0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11bb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11bc0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11bd0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11c20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11c30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
11c40 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
11c50 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
11c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
11c70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
11c80 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
11c90 74 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d  tring TableName.
11ca0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11cb0 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
11cc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11cd0 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
11ce0 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d00 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
11d10 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d  ts = Arguments;.
11d20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11d30 20 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74     if ((argument
11d40 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20  s != null) &&.. 
11d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d60 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65     (arguments.Le
11d70 6e 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65  ngth > TableName
11d80 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
11d90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11db0 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73  return arguments
11dc0 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d  [TableNameIndex]
11dd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11de0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11df0 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
11e00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11e40 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11e50 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
11e60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
11e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11eb0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
11ec0 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69  te SQLiteIndex i
11ed0 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndex;..        /
11ee0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11ef0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
11f00 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
11f10 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
11f20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
11f30 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20  ing all the..   
11f40 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f       /// data fo
11f50 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64  r the inputs and
11f60 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e   outputs relatin
11f70 67 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65  g to the most re
11f80 63 65 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20  cent index..    
11f90 20 20 20 20 2f 2f 2f 20 73 65 6c 65 63 74 69 6f      /// selectio
11fa0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
11fb0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11fc0 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
11fd0 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 20 49  al SQLiteIndex I
11fe0 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndex..        {.
11ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
12000 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
12010 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78  (); return index
12020 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
12030 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
12040 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
12050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12090 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
120a0 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
120b0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
120c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
120d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
120e0 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e   method should n
120f0 6f 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20  ormally be used 
12100 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
12110 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
12120 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
12130 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
12140 3e 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65  > method in orde
12150 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r to..        //
12160 2f 20 70 65 72 66 6f 72 6d 20 69 6e 64 65 78 20  / perform index 
12170 73 65 6c 65 63 74 69 6f 6e 20 62 61 73 65 64 20  selection based 
12180 6f 6e 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  on the constrain
12190 74 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ts provided by t
121a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
121b0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
121c0 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
121d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
121e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
121f0 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a   name="index">..
12200 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
12210 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
12220 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63  eIndex" /> objec
12230 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61  t instance conta
12240 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20  ining all the.. 
12250 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20         /// data 
12260 66 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20 61  for the inputs a
12270 6e 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74  nd outputs relat
12280 69 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c  ing to index sel
12290 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  ection...       
122a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
122b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
122c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
122d0 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20  / Non-zero upon 
122e0 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
122f0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
12300 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12310 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 42 65   virtual bool Be
12320 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
12330 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
12340 78 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20  x index..       
12350 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
12360 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
12370 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
12380 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
12390 68 69 73 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65  his.index = inde
123a0 78 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  x;....          
123b0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
123c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
123d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
123e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12420 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
12430 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
12440 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72  // Attempts to r
12450 65 63 6f 72 64 20 74 68 65 20 72 65 6e 61 6d 69  ecord the renami
12460 6e 67 20 6f 66 20 74 68 65 20 76 69 72 74 75 61  ng of the virtua
12470 6c 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74  l table associat
12480 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
12490 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
124a0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
124b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
124c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
124d0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
124e0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
124f0 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f   The new name fo
12500 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
12510 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
12520 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
12530 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
12540 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
12550 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
12560 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
12570 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
12580 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
12590 72 74 75 61 6c 20 62 6f 6f 6c 20 52 65 6e 61 6d  rtual bool Renam
125a0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
125b0 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20  string name..   
125c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
125d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
125e0 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
125f0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
12600 20 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74     if ((argument
12610 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20  s != null) &&.. 
12620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
12630 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68  arguments.Length
12640 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65   > TableNameInde
12650 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x))..           
12660 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12670 20 20 20 20 61 72 67 75 6d 65 6e 74 73 5b 54 61      arguments[Ta
12680 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 20 3d 20  bleNameIndex] = 
12690 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  name;..         
126a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
126b0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
126c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
126d0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
126e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
126f0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
12700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
12710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12750 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
12760 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
12770 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73  veHandle Members
12780 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
12790 65 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48  e IntPtr nativeH
127a0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
127b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
127c0 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
127d0 6e 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  ns the underlyin
127e0 67 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20  g SQLite native 
127f0 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65  handle associate
12800 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
12810 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20       /// object 
12820 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
12830 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12840 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
12850 63 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72  c virtual IntPtr
12860 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20   NativeHandle.. 
12870 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12880 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
12890 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
128a0 75 72 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65  urn nativeHandle
128b0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
128c0 20 69 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20   internal set { 
128d0 6e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76  nativeHandle = v
128e0 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
128f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
12900 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
12910 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12950 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12960 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
12970 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73  sposable Members
12980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
12990 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
129a0 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66   /// Disposes of
129b0 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
129c0 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
129d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
129e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
129f0 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
12a00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12a10 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
12a20 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
12a30 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
12a40 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
12a50 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12a60 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
12a70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12ac0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
12ad0 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50  n IDisposable "P
12ae0 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d  attern" Members.
12af0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
12b00 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d   bool disposed;.
12b10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12b20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12b30 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73  /// Throws an <s
12b40 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44  ee cref="ObjectD
12b50 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e  isposedException
12b60 22 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a  " /> if this obj
12b70 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
12b80 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65   instance has be
12b90 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  en disposed...  
12ba0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12bb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
12bc0 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b  ivate void Check
12bd0 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68  Disposed() /* th
12be0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
12bf0 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f  {..#if THROW_ON_
12c00 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20  DISPOSED..      
12c10 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
12c20 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
12c30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12c40 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62      throw new Ob
12c50 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
12c60 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
12c70 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
12c80 6f 66 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c  of(SQLiteVirtual
12c90 54 61 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20  Table).Name);.. 
12ca0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
12cb0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
12cc0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
12cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
12d20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12d30 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65       /// Dispose
12d40 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  s of this object
12d50 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
12d60 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12d70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
12d80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73  <param name="dis
12d90 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20  posing">..      
12da0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
12db0 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
12dc0 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72   being called fr
12dd0 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
12de0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
12df0 69 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74  ispose()" /> met
12e00 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68  hod.  Zero if th
12e10 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69  is method is bei
12e20 6e 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20  ng called..     
12e30 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20     /// from the 
12e40 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20  finalizer...    
12e50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
12e60 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
12e70 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64  ted virtual void
12e80 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
12e90 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
12ea0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12eb0 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
12ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
12ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ee0 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29  //if (disposing)
12ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12f00 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20    //{..         
12f10 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
12f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12f50 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70     //    // disp
12f60 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
12f70 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
12f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12f90 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  /    ///////////
12fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
12fc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a             //}..
12fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12fe0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13000 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
13010 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
13020 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
13030 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
13040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13050 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13070 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13080 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
13090 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
130a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
130b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
130c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
130d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
130e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13120 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
13130 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20   Destructor..   
13140 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13150 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13160 46 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f  Finalizes this o
13170 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
13180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
13190 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
131a0 20 7e 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54   ~SQLiteVirtualT
131b0 61 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  able()..        
131c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
131d0 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
131e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
131f0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
13200 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
13210 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13260 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
13270 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72  region SQLiteVir
13280 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
13290 42 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  Base Class..    
132a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
132b0 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
132c0 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d  s represents a m
132d0 61 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74  anaged virtual t
132e0 61 62 6c 65 20 63 75 72 73 6f 72 20 69 6d 70 6c  able cursor impl
132f0 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20  ementation...   
13300 20 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73   /// It is not s
13310 65 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64  ealed and should
13320 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
13330 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61  base class for a
13340 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72  ny..    /// user
13350 2d 64 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c  -defined virtual
13360 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 63 6c   table cursor cl
13370 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65  asses implemente
13380 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64  d in managed cod
13390 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
133a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
133b0 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56  ic class SQLiteV
133c0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
133d0 72 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r :..           
133e0 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
133f0 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c  ndle, IDisposabl
13400 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20  e /* NOT SEALED 
13410 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  */..    {..     
13420 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65     #region Prote
13430 63 74 65 64 20 43 6f 6e 73 74 61 6e 74 73 0d 0a  cted Constants..
13440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13450 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13460 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65  // This value re
13470 70 72 65 73 65 6e 74 73 20 61 6e 20 69 6e 76 61  presents an inva
13480 6c 69 64 20 69 6e 74 65 67 65 72 20 72 6f 77 20  lid integer row 
13490 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 2e  sequence number.
134a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
134b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
134c0 20 20 70 72 6f 74 65 63 74 65 64 20 73 74 61 74    protected stat
134d0 69 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20  ic readonly int 
134e0 49 6e 76 61 6c 69 64 52 6f 77 49 6e 64 65 78 20  InvalidRowIndex 
134f0 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  = 0;..        #e
13500 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
13510 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
13560 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
13570 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
13580 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13590 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
135a0 54 68 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20  The field holds 
135b0 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20  the integer row 
135c0 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20  sequence number 
135d0 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
135e0 72 6f 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  row..        ///
135f0 20 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74   pointed to by t
13600 68 69 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63  his cursor objec
13610 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
13620 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13630 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
13640 76 61 74 65 20 69 6e 74 20 72 6f 77 49 6e 64 65  vate int rowInde
13650 78 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  x;..        #end
13660 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
13670 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
136c0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
136d0 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
136e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
136f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13700 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
13710 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
13720 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
13730 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13740 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13750 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
13760 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
13770 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
13780 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
13790 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
137a0 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
137b0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
137c0 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
137d0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
137e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
137f0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
13800 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
13810 62 6c 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20  bleCursor(..    
13820 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
13830 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
13840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
13850 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
13860 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
13870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
13880 69 73 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c 65  is.table = table
13890 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
138a0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
138b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
138c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13900 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
13910 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
13920 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
13930 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13940 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13950 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
13960 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
13970 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
13980 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13990 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
139a0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
139b0 65 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20  eCursor()..     
139c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
139d0 20 20 72 6f 77 49 6e 64 65 78 20 3d 20 49 6e 76    rowIndex = Inv
139e0 61 6c 69 64 52 6f 77 49 6e 64 65 78 3b 0d 0a 20  alidRowIndex;.. 
139f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13a00 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13a10 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
13a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13a60 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
13a70 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72  on Public Proper
13a80 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72  ties..        pr
13a90 69 76 61 74 65 20 53 51 4c 69 74 65 56 69 72 74  ivate SQLiteVirt
13aa0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d  ualTable table;.
13ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13ac0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13ad0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
13ae0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
13af0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
13b00 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
13b10 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
13b20 2f 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65  / with this obje
13b30 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
13b40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13b50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
13b60 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c  blic virtual SQL
13b70 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
13b80 54 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  Table..        {
13b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
13ba0 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
13bb0 64 28 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c  d(); return tabl
13bc0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
13bd0 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
13c30 69 76 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e  ivate int indexN
13c40 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  umber;..        
13c50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13c60 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65         /// Numbe
13c70 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  r used to help i
13c80 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
13c90 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69  cted index.  Thi
13ca0 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20  s value will..  
13cb0 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74        /// be set
13cc0 20 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72   via the <see cr
13cd0 65 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d  ef="Filter" /> m
13ce0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
13cf0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13d00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
13d10 69 72 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78  irtual int Index
13d20 4e 75 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20  Number..        
13d30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
13d40 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
13d50 65 64 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64  ed(); return ind
13d60 65 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20  exNumber; }..   
13d70 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13d80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13dd0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
13de0 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b  ing indexString;
13df0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
13e00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13e10 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64   /// String used
13e20 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
13e30 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
13e40 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75  ndex.  This valu
13e50 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  e will..        
13e60 2f 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20 74  /// be set via t
13e70 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69  he <see cref="Fi
13e80 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
13e90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13ea0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13eb0 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
13ec0 20 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72   string IndexStr
13ed0 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ing..        {..
13ee0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
13ef0 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
13f00 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53  ); return indexS
13f10 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20  tring; }..      
13f20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
13f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f40 2f 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f70 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13f80 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
13f90 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d  Value[] values;.
13fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13fb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13fc0 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75  /// The values u
13fd0 73 65 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68  sed to filter th
13fe0 65 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20  e rows returned 
13ff0 76 69 61 20 74 68 69 73 20 63 75 72 73 6f 72 20  via this cursor 
14000 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
14010 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54  /// instance.  T
14020 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62  his value will b
14030 65 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73  e set via the <s
14040 65 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22  ee cref="Filter"
14050 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
14060 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
14070 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14080 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
14090 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56   virtual SQLiteV
140a0 61 6c 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20  alue[] Values.. 
140b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
140c0 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
140d0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
140e0 75 72 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20  urn values; }.. 
140f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14100 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14110 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14160 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
14170 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74  on Protected Met
14180 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
14190 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
141a0 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
141b0 73 20 74 6f 20 70 65 72 73 69 73 74 20 74 68 65  s to persist the
141c0 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20   specified <see 
141d0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
141e0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  e" /> object..  
141f0 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
14200 63 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ces in order to 
14210 6d 61 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61  make them availa
14220 62 6c 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20  ble after the.. 
14230 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
14240 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
14250 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65  agedModule.Filte
14260 72 22 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74  r" /> method ret
14270 75 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  urns...        /
14280 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14290 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
142a0 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e  m name="values">
142b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
142c0 65 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  e array of <see 
142d0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
142e0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
142f0 74 61 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20  tances to be..  
14300 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73        /// persis
14310 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
14320 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
14330 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
14340 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14350 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65  he number of <se
14360 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61  e cref="SQLiteVa
14370 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  lue" /> object i
14380 6e 73 74 61 6e 63 65 73 20 74 68 61 74 20 77 65  nstances that we
14390 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
143a0 73 75 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72  successfully per
143b0 73 69 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  sisted...       
143c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
143d0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
143e0 65 64 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54  ed virtual int T
143f0 72 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28  ryPersistValues(
14400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
14410 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
14420 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
14430 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
14440 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65            int re
14450 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  sult = 0;....   
14460 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
14470 75 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ues != null)..  
14480 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14490 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
144a0 65 61 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75  each (SQLiteValu
144b0 65 20 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65  e value in value
144c0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
144d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
144e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
144f0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
14500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14510 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
14520 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14530 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
14540 65 2e 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20  e.Persist())..  
14550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14560 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d        result++;.
14570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14580 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
14590 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
145a0 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
145b0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
145c0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
145d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
145e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14620 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
14630 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68  gion Public Meth
14640 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
14650 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14660 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
14670 68 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61  hod should norma
14680 6c 6c 79 20 62 65 20 75 73 65 64 20 62 79 20 74  lly be used by t
14690 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
146a0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
146b0 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
146c0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
146d0 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20  d in order to.. 
146e0 20 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f         /// perfo
146f0 72 6d 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20  rm filtering of 
14700 74 68 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20  the result rows 
14710 61 6e 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64  and/or to record
14720 20 74 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a   the filtering..
14730 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74          /// crit
14740 65 72 69 61 20 70 72 6f 76 69 64 65 64 20 62 79  eria provided by
14750 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
14760 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
14770 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14780 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
14790 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
147a0 78 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20  xNumber">..     
147b0 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73     /// Number us
147c0 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
147d0 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
147e0 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
147f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
14800 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
14810 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72  m name="indexStr
14820 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ing">..        /
14830 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74  // String used t
14840 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
14850 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
14860 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
14870 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
14880 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
14890 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20  me="values">..  
148a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
148b0 6c 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69  lues correspondi
148c0 6e 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d  ng to each colum
148d0 6e 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65  n in the selecte
148e0 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
148f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
14900 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
14910 69 72 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74  irtual void Filt
14920 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
14930 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72   int indexNumber
14940 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
14950 74 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e  tring indexStrin
14960 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
14970 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61  SQLiteValue[] va
14980 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lues..          
14990 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
149a0 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
149b0 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
149c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
149d0 28 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29  (values != null)
149e0 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
149f0 20 20 20 20 20 28 54 72 79 50 65 72 73 69 73 74       (TryPersist
14a00 56 61 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21  Values(values) !
14a10 3d 20 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29  = values.Length)
14a20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
14a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14a40 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69    throw new SQLi
14a50 74 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  teException(..  
14a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a70 20 20 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72    "failed to per
14a80 73 69 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  sist one or more
14a90 20 76 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20   values");..    
14aa0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14ab0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e           this.in
14ac0 64 65 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65  dexNumber = inde
14ad0 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20  xNumber;..      
14ae0 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78        this.index
14af0 53 74 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74  String = indexSt
14b00 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20  ring;..         
14b10 20 20 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d     this.values =
14b20 20 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20   values;..      
14b30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
14b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
14b90 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14ba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  .        /// Det
14bb0 65 72 6d 69 6e 65 73 20 74 68 65 20 69 6e 74 65  ermines the inte
14bc0 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
14bd0 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   number for the 
14be0 63 75 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20  current row...  
14bf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14c00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
14c10 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
14c20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74       /// The int
14c30 65 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63  eger row sequenc
14c40 65 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65  e number for the
14c50 20 63 75 72 72 65 6e 74 20 72 6f 77 20 2d 4f 52   current row -OR
14c60 2d 20 7a 65 72 6f 20 69 66 0d 0a 20 20 20 20 20  - zero if..     
14c70 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74     /// it cannot
14c80 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
14c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
14ca0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
14cb0 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
14cc0 69 6e 74 20 47 65 74 52 6f 77 49 6e 64 65 78 28  int GetRowIndex(
14cd0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
14ce0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14cf0 20 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20   rowIndex;..    
14d00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14d10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14d60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14d70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
14d80 64 6a 75 73 74 73 20 74 68 65 20 69 6e 74 65 67  djusts the integ
14d90 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20  er row sequence 
14da0 6e 75 6d 62 65 72 20 73 6f 20 74 68 61 74 20 69  number so that i
14db0 74 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 0d  t refers to the.
14dc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78  .        /// nex
14dd0 74 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  t row...        
14de0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14df0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
14e00 69 72 74 75 61 6c 20 76 6f 69 64 20 4e 65 78 74  irtual void Next
14e10 52 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20  RowIndex()..    
14e20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14e30 20 20 20 72 6f 77 49 6e 64 65 78 2b 2b 3b 0d 0a     rowIndex++;..
14e40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14e50 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
14e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
14e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14eb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
14ec0 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
14ed0 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d  eHandle Members.
14ee0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
14ef0 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61   IntPtr nativeHa
14f00 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndle;..        /
14f10 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14f20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
14f30 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
14f40 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
14f50 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
14f60 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
14f70 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
14f80 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
14f90 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14fa0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
14fb0 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
14fc0 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
14fd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14fe0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
14ff0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
15000 72 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b  rn nativeHandle;
15010 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
15020 69 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e  internal set { n
15030 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61  ativeHandle = va
15040 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
15050 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
15060 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
15070 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
150c0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
150d0 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
150e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
150f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15100 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
15110 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
15120 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
15130 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15140 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
15150 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
15160 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15170 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
15180 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
15190 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
151a0 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
151b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
151c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
151d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
151e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15220 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
15230 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
15240 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
15250 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
15260 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
15270 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15280 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15290 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65  // Throws an <se
152a0 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69  e cref="ObjectDi
152b0 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22  sposedException"
152c0 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65   /> if this obje
152d0 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
152e0 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
152f0 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
15300 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15310 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
15320 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
15330 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
15340 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  ow */..        {
15350 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44  ..#if THROW_ON_D
15360 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20  ISPOSED..       
15370 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
15380 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
15390 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
153a0 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
153b0 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
153c0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
153d0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
153e0 66 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f(SQLiteVirtualT
153f0 61 62 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65  ableCursor).Name
15400 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
15410 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
15420 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15470 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15480 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15490 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69  ..        /// Di
154a0 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f  sposes of this o
154b0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
154c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
154d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
154e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
154f0 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20  ="disposing">.. 
15500 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
15510 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68  ero if this meth
15520 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c  od is being call
15530 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
15540 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
15550 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f  ef="Dispose()" /
15560 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20  > method.  Zero 
15570 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69  if this method i
15580 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a  s being called..
15590 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d          /// from
155a0 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d   the finalizer..
155b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
155c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
155d0 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
155e0 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
155f0 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
15600 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15610 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
15620 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
15630 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15640 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
15650 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
15660 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20         //{..    
15670 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15680 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156a0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
156b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
156c0 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64   dispose managed
156d0 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
156e0 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
156f0 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
15700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15730 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  //}....         
15740 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
15750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
15770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15780 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61  / release unmana
15790 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
157a0 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
157b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
157c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
157e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
157f0 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65   disposed = true
15800 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
15810 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
15820 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
15830 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
15840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
15890 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
158a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
158b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
158c0 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74   /// Finalizes t
158d0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
158e0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
158f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15900 20 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72        ~SQLiteVir
15910 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28  tualTableCursor(
15920 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
15930 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
15940 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  e(false);..     
15950 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
15960 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
15970 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
15980 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
15990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159d0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
159e0 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48  n ISQLiteNativeH
159f0 61 6e 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d  andle Interface.
15a00 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
15a10 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
15a20 20 69 6e 74 65 72 66 61 63 65 20 72 65 70 72 65   interface repre
15a30 73 65 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68  sents a native h
15a40 61 6e 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62  andle provided b
15a50 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
15a60 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61  e..    /// libra
15a70 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
15a80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
15a90 6c 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53  lic interface IS
15aa0 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
15ab0 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
15ac0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15ad0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
15ae0 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76   native handle v
15af0 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
15b00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15b10 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61         IntPtr Na
15b20 74 69 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74  tiveHandle { get
15b30 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ; }..    }..    
15b40 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
15b50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15ba0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51  .    #region ISQ
15bb0 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
15bc0 65 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  e Interface..   
15bd0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15be0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74      /// This int
15bf0 65 72 66 61 63 65 20 72 65 70 72 65 73 65 6e 74  erface represent
15c00 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  s a virtual tabl
15c10 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
15c20 20 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20   written in..   
15c30 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63 6f 64   /// managed cod
15c40 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
15c50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
15c60 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51  ic interface ISQ
15c70 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
15c80 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
15c90 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15ca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74  .        /// Ret
15cb0 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66  urns non-zero if
15cc0 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20   the schema for 
15cd0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
15ce0 65 20 68 61 73 20 62 65 65 6e 0d 0a 20 20 20 20  e has been..    
15cf0 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 65 64      /// declared
15d00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15d10 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15d20 20 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65 64     bool Declared
15d30 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20   { get; }....   
15d40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
15d50 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
15d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15da0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15db0 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e  // Returns the n
15dc0 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c  ame of the modul
15dd0 65 20 61 73 20 69 74 20 77 61 73 20 72 65 67 69  e as it was regi
15de0 73 74 65 72 65 64 20 77 69 74 68 20 74 68 65 20  stered with the 
15df0 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
15e00 2f 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79  /// core library
15e10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15e20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15e30 20 20 20 73 74 72 69 6e 67 20 4e 61 6d 65 20 7b     string Name {
15e40 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20   get; }....     
15e50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
15ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15eb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
15ec0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
15ed0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
15ee0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
15ef0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
15f00 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
15f10 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
15f20 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
15f30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15f40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
15f50 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e  param name="conn
15f60 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20  ection">..      
15f70 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
15f80 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
15f90 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74  ction" /> object
15fa0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
15fb0 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
15fc0 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75     /// the virtu
15fd0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
15fe0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
15ff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16000 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e  ram name="pClien
16010 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  tData">..       
16020 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
16030 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
16040 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
16050 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61  h this module, a
16060 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20  s it was..      
16070 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74    /// provided t
16080 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  o the SQLite cor
16090 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74  e library when t
160a0 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
160b0 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
160c0 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74     /// was creat
160d0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
160e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
160f0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16100 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d  me="arguments">.
16110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
16120 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61   module name, da
16130 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69 72  tabase name, vir
16140 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c  tual table name,
16150 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a   and all other..
16160 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75          /// argu
16170 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20  ments passed to 
16180 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
16190 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
161a0 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
161b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
161c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
161d0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
161e0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
161f0 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
16200 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
16210 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
16220 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
16230 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
16240 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
16250 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
16260 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20  ance associated 
16270 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  with..        //
16280 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  / the virtual ta
16290 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
162a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
162b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
162c0 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
162d0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66        /// Upon f
162e0 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72  ailure, this par
162f0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
16300 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
16310 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20  in an error..   
16320 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65       /// message
16330 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16340 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
16350 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
16360 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
16370 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
16380 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
16390 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
163a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
163b0 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61  teErrorCode Crea
163c0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
163d0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
163e0 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f  n connection,  /
163f0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
16400 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69       IntPtr pCli
16410 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20  entData,        
16420 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
16430 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
16440 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20 20  ] arguments,    
16450 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
16460 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
16470 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
16480 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75  ble table, /* ou
16490 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
164a0 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
164b0 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20  or              
164c0 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
164d0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
164e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
164f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16530 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
16540 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
16550 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
16560 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
16570 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
16580 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
16590 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
165a0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
165b0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
165c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
165d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
165e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
165f0 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20  onnection">..   
16600 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
16610 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
16620 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a  nnection" /> obj
16630 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
16640 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
16650 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69        /// the vi
16660 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
16670 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16680 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16690 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c  <param name="pCl
166a0 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20  ientData">..    
166b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
166c0 76 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69  ve user-data poi
166d0 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20  nter associated 
166e0 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65  with this module
166f0 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20  , as it was..   
16700 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65       /// provide
16710 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20  d to the SQLite 
16720 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65  core library whe
16730 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  n the native mod
16740 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ule instance..  
16750 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72        /// was cr
16760 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  eated...        
16770 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16780 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
16790 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73   name="arguments
167a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
167b0 54 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c  The module name,
167c0 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20   database name, 
167d0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61  virtual table na
167e0 6d 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65  me, and all othe
167f0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  r..        /// a
16800 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20  rguments passed 
16810 74 6f 20 74 68 65 20 43 52 45 41 54 45 20 56 49  to the CREATE VI
16820 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74  RTUAL TABLE stat
16830 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  ement...        
16840 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16850 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
16860 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
16870 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
16880 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
16890 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
168a0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
168b0 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
168c0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
168d0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
168e0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
168f0 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
16900 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
16910 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c   /// the virtual
16920 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
16930 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
16940 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16950 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d  m name="error">.
16960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
16970 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
16980 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
16990 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
169a0 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a  ntain an error..
169b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73          /// mess
169c0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
169d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
169e0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
169f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
16a00 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
16a10 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
16a20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
16a30 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
16a40 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43  QLiteErrorCode C
16a50 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
16a60 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
16a70 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e  ction connection
16a80 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  ,  /* in */..   
16a90 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
16aa0 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20 20  pClientData,    
16ab0 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
16ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
16ad0 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c  ing[] arguments,
16ae0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
16af0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16b00 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75   ref SQLiteVirtu
16b10 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f  alTable table, /
16b20 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
16b30 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
16b40 20 65 72 72 6f 72 20 20 20 20 20 20 20 20 20 20   error          
16b50 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
16b60 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
16b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
16bd0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16be0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
16bf0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
16c00 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
16c10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
16c20 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
16c30 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
16c40 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
16c50 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
16c60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16c70 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
16c80 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
16c90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
16ca0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
16cb0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
16cc0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
16cd0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
16ce0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
16cf0 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
16d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16d10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
16d20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
16d30 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  "index">..      
16d40 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
16d50 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
16d60 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
16d70 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ance containing 
16d80 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20  all the..       
16d90 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68   /// data for th
16da0 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74  e inputs and out
16db0 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f  puts relating to
16dc0 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e   index selection
16dd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16de0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
16df0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
16e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
16e10 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
16e20 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
16e30 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
16e40 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
16e50 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65 73 74  teErrorCode Best
16e60 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
16e70 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
16e80 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
16e90 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
16ea0 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20      SQLiteIndex 
16eb0 69 6e 64 65 78 20 20 20 20 20 20 20 20 20 2f 2a  index         /*
16ec0 20 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20 20   in, out */..   
16ed0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
16ee0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
16ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16f30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
16f40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
16f50 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
16f60 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
16f70 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
16f80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
16f90 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
16fa0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f  iveModule.xDisco
16fb0 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
16fc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16fd0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16fe0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16ff0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
17000 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
17010 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
17020 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
17030 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
17040 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
17050 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
17060 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
17070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17080 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17090 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
170a0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
170b0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
170c0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
170d0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
170e0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
170f0 45 72 72 6f 72 43 6f 64 65 20 44 69 73 63 6f 6e  ErrorCode Discon
17100 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
17110 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
17120 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69  Table table /* i
17130 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
17140 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17190 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
171a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
171b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
171c0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
171d0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
171e0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
171f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
17200 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
17210 6c 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20  le.xDestroy" /> 
17220 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
17230 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
17250 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
17260 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17270 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
17280 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17290 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
172a0 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
172b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
172c0 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
172d0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
172e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
172f0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
17300 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
17310 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
17320 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
17330 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
17340 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
17350 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17360 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20  Destroy(..      
17370 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
17380 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
17390 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
173a0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
173b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
173c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173d0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
17400 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17410 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17420 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
17430 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
17440 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
17450 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
17460 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
17470 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20  odule.xOpen" /> 
17480 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
17490 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
174a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
174b0 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
174c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
174d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
174e0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
174f0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
17500 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
17510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
17520 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
17530 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
17540 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
17550 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
17560 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a  name="cursor">..
17570 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
17580 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
17590 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
175a0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
175b0 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
175c0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
175d0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
175e0 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62  bleCursor" /> ob
175f0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
17600 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
17610 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 6e    /// with the n
17620 65 77 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  ewly opened virt
17630 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
17640 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17650 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
17660 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
17670 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
17680 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
17690 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
176a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
176b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
176c0 74 65 45 72 72 6f 72 43 6f 64 65 20 4f 70 65 6e  teErrorCode Open
176d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
176e0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
176f0 65 20 74 61 62 6c 65 2c 20 20 20 20 20 20 20 20  e table,        
17700 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
17710 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
17720 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
17730 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20  ursor cursor /* 
17740 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
17750 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
17760 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
177b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
177c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
177d0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
177e0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
177f0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
17800 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
17810 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
17820 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20  dule.xClose" /> 
17830 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
17840 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17850 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
17860 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
17870 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
17880 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
17890 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
178a0 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
178b0 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  ct instance..   
178c0 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
178d0 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65  ted with the pre
178e0 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76  viously opened v
178f0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
17900 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20  sor to be..     
17910 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20     /// used...  
17920 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17930 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17940 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
17950 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
17960 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
17970 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
17980 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
17990 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
179a0 6f 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d 0a 20  orCode Close(.. 
179b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
179c0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
179d0 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e  sor cursor /* in
179e0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
179f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
17a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
17a50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17a60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
17a70 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
17a80 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
17a90 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
17aa0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
17ab0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
17ac0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
17ad0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
17ae0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17af0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
17b00 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e  m name="cursor">
17b10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17b20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
17b30 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
17b40 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
17b50 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
17b60 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
17b70 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69  d with the previ
17b80 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72  ously opened vir
17b90 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
17ba0 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20  r to be..       
17bb0 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20   /// used...    
17bc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
17bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
17be0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
17bf0 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20  Number">..      
17c00 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65    /// Number use
17c10 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69  d to help identi
17c20 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  fy the selected 
17c30 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
17c40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17c50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17c60 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69   name="indexStri
17c70 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ng">..        //
17c80 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / String used to
17c90 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
17ca0 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
17cb0 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
17cc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
17cd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17ce0 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
17cf0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
17d00 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  ues correspondin
17d10 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e  g to each column
17d20 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64   in the selected
17d30 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
17d40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
17d50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
17d60 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
17d70 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
17d80 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
17d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17da0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17db0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
17dc0 65 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  e Filter(..     
17dd0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
17de0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
17df0 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f  cursor, /* in */
17e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
17e10 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 20 20  t indexNumber,  
17e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
17e30 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
17e40 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65       string inde
17e50 78 53 74 72 69 6e 67 2c 20 20 20 20 20 20 20 20  xString,        
17e60 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
17e70 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
17e80 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73  teValue[] values
17e90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
17ea0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
17eb0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
17ec0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17f10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17f20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17f30 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
17f40 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
17f50 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
17f60 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
17f70 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
17f80 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65  ule.xNext" /> me
17f90 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
17fa0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17fb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
17fc0 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e  m name="cursor">
17fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17fe0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
17ff0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
18000 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
18010 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
18020 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
18030 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69  d with the previ
18040 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72  ously opened vir
18050 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
18060 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20  r to be..       
18070 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20   /// used...    
18080 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
180a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
180b0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
180c0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
180d0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
180e0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
180f0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
18100 43 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20 20 20  Code Next(..    
18110 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
18120 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
18130 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f   cursor /* in */
18140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
18150 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
181b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
181c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
181d0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
181e0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
181f0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
18200 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
18210 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
18220 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  Eof" /> method..
18230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
18240 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18250 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18260 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
18270 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
18280 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
18290 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
182a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
182b0 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
182c0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
182d0 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20   the previously 
182e0 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74  opened virtual t
182f0 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62  able cursor to b
18300 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
18310 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
18320 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
18330 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
18340 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
18350 6f 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d 6f  on-zero if no mo
18360 72 65 20 72 6f 77 73 20 61 72 65 20 61 76 61 69  re rows are avai
18370 6c 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68 65  lable; zero othe
18380 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  rwise...        
18390 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
183a0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 45 6f 66          bool Eof
183b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
183c0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
183d0 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f  eCursor cursor /
183e0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
183f0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
18400 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18450 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
18460 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
18470 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
18480 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
18490 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
184a0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
184b0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
184c0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f  odule.xColumn" /
184d0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
184e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
184f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18500 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73  param name="curs
18510 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
18520 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
18530 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
18540 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62  bleCursor" /> ob
18550 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20  ject instance.. 
18560 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
18570 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
18580 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64  reviously opened
18590 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
185a0 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20  ursor to be..   
185b0 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a       /// used...
185c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
185d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
185e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
185f0 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20  ontext">..      
18600 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
18610 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 74 65  ref="SQLiteConte
18620 78 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  xt" /> object in
18630 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65  stance to be use
18640 64 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  d for..        /
18650 2f 2f 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65  // returning the
18660 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d   specified colum
18670 6e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 53  n value to the S
18680 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
18690 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
186a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
186b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
186c0 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20  me="index">..   
186d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72       /// The zer
186e0 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63 6f  o-based index co
186f0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
18700 68 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69  he column contai
18710 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ning the..      
18720 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62    /// value to b
18730 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  e returned...   
18740 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18750 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18760 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
18770 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
18780 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
18790 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
187a0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
187b0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
187c0 72 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20  rCode Column(.. 
187d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
187e0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
187f0 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69  sor cursor, /* i
18800 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18810 20 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20    SQLiteContext 
18820 63 6f 6e 74 65 78 74 2c 20 20 20 20 20 20 20 20  context,        
18830 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
18840 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64           int ind
18850 65 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ex              
18860 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
18870 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
18880 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
18890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
188e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
188f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
18900 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
18910 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
18920 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18930 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
18940 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
18950 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
18960 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
18970 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
18980 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18990 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a  name="cursor">..
189a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
189b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
189c0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
189d0 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  sor" /> object i
189e0 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20  nstance..       
189f0 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
18a00 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75  with the previou
18a10 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75  sly opened virtu
18a20 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20  al table cursor 
18a30 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  to be..        /
18a40 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  // used...      
18a50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18a70 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
18a80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
18a90 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73  on success, this
18aa0 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
18ab0 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63  be modified to c
18ac0 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75  ontain the uniqu
18ad0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
18ae0 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74  nteger row ident
18af0 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 63 75  ifier for the cu
18b00 72 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74 68  rrent row for th
18b10 65 20 73 70 65 63 69 66 69 65 64 20 63 75 72 73  e specified curs
18b20 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
18b30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18b40 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
18b60 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
18b70 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
18b80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
18b90 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
18ba0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f  LiteErrorCode Ro
18bb0 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  wId(..          
18bc0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
18bd0 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
18be0 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  r, /* in */..   
18bf0 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e           ref lon
18c00 67 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20  g rowId         
18c10 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74            /* out
18c20 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18c30 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
18c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18c90 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
18ca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
18cb0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
18cc0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
18cd0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
18ce0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
18cf0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
18d00 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
18d10 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
18d20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
18d30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
18d40 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
18d50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18d60 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18d70 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
18d80 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
18d90 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
18da0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
18db0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
18dc0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
18dd0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18de0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
18df0 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20  me="values">..  
18e00 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
18e10 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ray of <see cref
18e20 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f  ="SQLiteValue" /
18e30 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
18e40 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  es containing.. 
18e50 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e         /// the n
18e60 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63  ew or modified c
18e70 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66  olumn values, if
18e80 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
18e90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18ea0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18eb0 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20  name="rowId">.. 
18ec0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
18ed0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
18ee0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
18ef0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
18f00 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a  ain the unique..
18f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
18f20 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69  ger row identifi
18f30 65 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20 74  er for the row t
18f40 68 61 74 20 77 61 73 20 69 6e 73 65 72 74 65 64  hat was inserted
18f50 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
18f60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18f70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
18f80 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18f90 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
18fa0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
18fb0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
18fc0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
18fd0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
18fe0 6f 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20 20  ode Update(..   
18ff0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
19000 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
19010 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  e, /* in */..   
19020 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
19030 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c 20 20  alue[] values,  
19040 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
19050 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e           ref lon
19060 67 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20  g rowId         
19070 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
19080 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
19090 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
190a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
190e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
190f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
19100 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
19110 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
19120 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
19130 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
19140 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
19150 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
19160 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
19170 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
19180 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
19190 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
191a0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
191b0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
191c0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
191d0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
191e0 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
191f0 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
19200 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
19210 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
19220 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
19230 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19240 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
19250 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
19260 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
19270 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
19280 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
19290 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
192a0 72 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a 20 20  rCode Begin(..  
192b0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
192c0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
192d0 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  le /* in */..   
192e0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
192f0 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a  //////////////..
19340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19350 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19360 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
19370 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
19380 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
19390 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
193a0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
193b0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22  iveModule.xSync"
193c0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
193d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
193e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
193f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
19400 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
19410 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
19420 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
19430 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
19440 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
19450 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
19460 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
19470 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
19480 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
194a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
194b0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
194c0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
194d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
194e0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
194f0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
19500 6f 64 65 20 53 79 6e 63 28 0d 0a 20 20 20 20 20  ode Sync(..     
19510 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
19520 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
19530 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
19540 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
19550 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
195a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
195b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
195c0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
195d0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
195e0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
195f0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
19600 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
19610 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20  Module.xCommit" 
19620 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
19630 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19640 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19650 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
19660 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
19670 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
19680 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
19690 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
196a0 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
196b0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
196c0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
196d0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
196e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
196f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
19700 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
19710 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
19720 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
19730 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19740 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19750 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
19760 64 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  de Commit(..    
19770 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
19780 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
19790 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
197a0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
197b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
197c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
19810 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
19820 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
19830 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
19840 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
19850 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
19860 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
19870 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
19880 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  k" /> method... 
19890 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
198a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
198b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
198c0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
198d0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
198e0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
198f0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
19900 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
19910 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
19920 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
19930 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
19940 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
19950 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19960 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
19970 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
19980 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
19990 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
199a0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
199b0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
199c0 72 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 28 0d  rCode Rollback(.
199d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
199e0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
199f0 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  table /* in */..
19a00 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
19a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
19a70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
19a80 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
19a90 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
19aa0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
19ab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19ac0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
19ad0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
19ae0 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
19af0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
19b00 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
19b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
19b20 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
19b30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19b40 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
19b50 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
19b60 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
19b70 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
19b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
19b90 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
19ba0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
19bb0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19bc0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19bd0 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75  ame="argumentCou
19be0 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
19bf0 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
19c00 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65  arguments to the
19c10 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20   function being 
19c20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20  sought...       
19c30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19c50 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
19c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
19c70 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63  name of the func
19c80 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68  tion being sough
19c90 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
19ca0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19cb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19cc0 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20  e="function">.. 
19cd0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
19ce0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
19cf0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
19d00 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
19d10 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
19d20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
19d30 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20  SQLiteFunction" 
19d40 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
19d50 63 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  ce responsible f
19d60 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
19d70 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65  implementing the
19d80 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74   specified funct
19d90 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
19da0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19db0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19dc0 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
19dd0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
19de0 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
19df0 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
19e00 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
19e10 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
19e20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
19e30 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74   user-data point
19e40 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  er associated wi
19e50 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
19e60 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
19e70 66 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a 20  function" />... 
19e80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19e90 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19ea0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
19eb0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
19ec0 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
19ed0 64 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 66  d function was f
19ee0 6f 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72  ound; zero other
19ef0 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  wise...        /
19f00 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
19f10 20 20 20 20 20 20 20 62 6f 6f 6c 20 46 69 6e 64         bool Find
19f20 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
19f30 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
19f40 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c  tualTable table,
19f50 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
19f60 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
19f70 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20 20 20  gumentCount,    
19f80 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
19f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
19fa0 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20 20  ing name,       
19fb0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
19fc0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
19fd0 72 65 66 20 53 51 4c 69 74 65 46 75 6e 63 74 69  ref SQLiteFuncti
19fe0 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a 20  on function, /* 
19ff0 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
1a000 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
1a010 43 6c 69 65 6e 74 44 61 74 61 20 20 20 20 20 20  ClientData      
1a020 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1a030 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1a040 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a090 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1a0a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1a0b0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1a0c0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1a0d0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1a0e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1a0f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1a100 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
1a110 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1a120 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1a130 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a140 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
1a150 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
1a160 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1a170 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1a180 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1a190 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1a1a0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
1a1b0 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
1a1c0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a1d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a1e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a1f0 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e 61  aram name="newNa
1a200 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  me">..        //
1a210 2f 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66  / The new name f
1a220 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  or the virtual t
1a230 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1a240 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1a250 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1a260 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1a270 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1a280 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1a290 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1a2a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1a2b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a2c0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
1a2d0 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1a2e0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f  alTable table, /
1a2f0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1a300 20 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77 4e       string newN
1a310 61 6d 65 20 20 20 20 20 20 20 20 20 20 20 20 2f  ame            /
1a320 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1a330 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1a340 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a390 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1a3a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1a3b0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1a3c0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1a3d0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1a3e0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1a3f0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1a400 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
1a410 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1a420 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1a430 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a440 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
1a450 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
1a460 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1a470 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1a480 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1a490 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1a4a0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
1a4b0 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
1a4c0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a4d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a4e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a4f0 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70  aram name="savep
1a500 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
1a510 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69  /// This is an i
1a520 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65  nteger identifie
1a530 72 20 75 6e 64 65 72 20 77 68 69 63 68 20 74 68  r under which th
1a540 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74  e the current st
1a550 61 74 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  ate of..        
1a560 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
1a570 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20  table should be 
1a580 73 61 76 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  saved...        
1a590 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1a5a0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1a5b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1a5c0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1a5d0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1a5e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1a5f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a600 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a610 20 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20   Savepoint(..   
1a620 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
1a630 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
1a640 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  e, /* in */..   
1a650 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76           int sav
1a660 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20  epoint          
1a670 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1a680 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1a690 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1a6a0 2f 2f 2f 2f 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 0d 0a  //////////////..
1a6e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1a6f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1a700 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1a710 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
1a720 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
1a730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1a740 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
1a750 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
1a760 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  se" /> method...
1a770 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1a780 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1a790 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1a7a0 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
1a7b0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
1a7c0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
1a7d0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
1a7e0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
1a7f0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
1a800 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
1a810 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1a820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a830 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a840 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76  <param name="sav
1a850 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  epoint">..      
1a860 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e    /// This is an
1a870 20 69 6e 74 65 67 65 72 20 75 73 65 64 20 74 6f   integer used to
1a880 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 61   indicate that a
1a890 6e 79 20 73 61 76 65 64 20 73 74 61 74 65 73 20  ny saved states 
1a8a0 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20  with an..       
1a8b0 20 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65 72 20   /// identifier 
1a8c0 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20  greater than or 
1a8d0 65 71 75 61 6c 20 74 6f 20 74 68 69 73 20 73 68  equal to this sh
1a8e0 6f 75 6c 64 20 62 65 20 64 65 6c 65 74 65 64 20  ould be deleted 
1a8f0 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
1a900 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
1a910 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1a920 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1a930 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1a940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1a950 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1a960 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1a970 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1a980 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1a990 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6c  iteErrorCode Rel
1a9a0 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ease(..         
1a9b0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
1a9c0 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
1a9d0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1a9e0 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74     int savepoint
1a9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1aa00 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1aa10 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1aa20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1aa70 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1aa80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1aa90 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1aaa0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1aab0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1aac0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1aad0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1aae0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
1aaf0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1ab00 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1ab10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1ab20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1ab30 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1ab40 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1ab50 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1ab60 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1ab70 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1ab80 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1ab90 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1aba0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1abb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1abc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1abd0 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f  ram name="savepo
1abe0 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
1abf0 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e  // This is an in
1ac00 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1ac10 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79   used to specify
1ac20 20 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65   a specific save
1ac30 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
1ac40 74 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72  tate for the vir
1ac50 74 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69  tual table for i
1ac60 74 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73  t to restore its
1ac70 65 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69  elf back to, whi
1ac80 63 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ch..        /// 
1ac90 73 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65  should also have
1aca0 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64   the effect of d
1acb0 65 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65  eleting all save
1acc0 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e  d states with an
1acd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
1ace0 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1acf0 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68   greater than th
1ad00 69 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20  is one...       
1ad10 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1ad20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1ad30 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1ad40 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1ad50 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1ad60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ad70 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1ad80 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1ad90 65 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20  e RollbackTo(.. 
1ada0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1adb0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
1adc0 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ble, /* in */.. 
1add0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
1ade0 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20  avepoint        
1adf0 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1ae00 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20             );.. 
1ae10 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
1ae20 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
1ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1ae80 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d  region SQLiteMem
1ae90 6f 72 79 20 53 74 61 74 69 63 20 43 6c 61 73 73  ory Static Class
1aea0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1aeb0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
1aec0 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73  s class contains
1aed0 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20   static methods 
1aee0 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f  that are used to
1aef0 20 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20 20 20   allocate,..    
1af00 2f 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65 2c 20  /// manipulate, 
1af10 61 6e 64 20 66 72 65 65 20 6e 61 74 69 76 65 20  and free native 
1af20 6d 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64 20  memory provided 
1af30 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
1af40 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1af50 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1af60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1af70 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  atic class SQLit
1af80 65 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d 0a  eMemory..    {..
1af90 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
1afa0 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69  Private Data..#i
1afb0 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42  f TRACK_MEMORY_B
1afc0 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20 2f 2f  YTES..        //
1afd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1afe0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 62       /// This ob
1aff0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73  ject instance is
1b000 20 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72 6f   used to synchro
1b010 6e 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74  nize access to t
1b020 68 65 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20  he other..      
1b030 20 20 2f 2f 2f 20 73 74 61 74 69 63 20 66 69 65    /// static fie
1b040 6c 64 73 20 6f 66 20 74 68 69 73 20 63 6c 61 73  lds of this clas
1b050 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1b060 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1b070 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1b080 69 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ic object syncRo
1b090 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
1b0a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1b0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1b100 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1b110 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1b120 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20  total number of 
1b130 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f  outstanding memo
1b140 72 79 20 62 79 74 65 73 20 61 6c 6c 6f 63 61 74  ry bytes allocat
1b150 65 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20  ed by this..    
1b160 20 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 75 73      /// class us
1b170 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 63  ing the SQLite c
1b180 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1b190 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1b1a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
1b1b0 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74  ivate static int
1b1c0 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b   bytesAllocated;
1b1d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1b1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b220 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1b230 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1b240 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1b250 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
1b260 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f  outstanding memo
1b270 72 79 20 62 79 74 65 73 20 65 76 65 72 20 61 6c  ry bytes ever al
1b280 6c 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20 20  located by..    
1b290 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61      /// this cla
1b2a0 73 73 20 75 73 69 6e 67 20 74 68 65 20 53 51 4c  ss using the SQL
1b2b0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1b2c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b2d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1b2e0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1b2f0 63 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79 74  c int maximumByt
1b300 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23 65  esAllocated;..#e
1b310 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65  ndif..        #e
1b320 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1b330 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1b380 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d         #region M
1b390 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e  emory Allocation
1b3a0 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
1b3b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1b3c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b3d0 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74  /// Allocates at
1b3e0 20 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69   least the speci
1b3f0 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62  fied number of b
1b400 79 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d  ytes of native m
1b410 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
1b420 2f 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74  // via the SQLit
1b430 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73  e core library s
1b440 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
1b450 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74  function and ret
1b460 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  urns..        //
1b470 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / the resulting 
1b480 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 0d  native pointer..
1b490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1b4a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1b4b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1b4c0 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20  ="size">..      
1b4d0 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
1b4e0 20 6f 66 20 62 79 74 65 73 20 74 6f 20 61 6c 6c   of bytes to all
1b4f0 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  ocate...        
1b500 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1b510 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1b520 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1b530 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1b540 74 65 72 20 74 68 61 74 20 70 6f 69 6e 74 73 20  ter that points 
1b550 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65  to a block of me
1b560 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73 74  mory of at least
1b570 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1b580 2f 20 73 70 65 63 69 66 69 65 64 20 73 69 7a 65  / specified size
1b590 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66 3d   -OR- <see cref=
1b5a0 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e  "IntPtr.Zero" />
1b5b0 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 63   if the memory c
1b5c0 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ould..        //
1b5d0 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63 61 74  / not be allocat
1b5e0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1b5f0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1b600 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1b610 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61  ic IntPtr Alloca
1b620 74 65 28 69 6e 74 20 73 69 7a 65 29 0d 0a 20 20  te(int size)..  
1b630 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b640 20 20 20 20 20 49 6e 74 50 74 72 20 70 4d 65 6d       IntPtr pMem
1b650 6f 72 79 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  ory = UnsafeNati
1b660 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
1b670 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b 0d  3_malloc(size);.
1b680 0a 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d  ...#if TRACK_MEM
1b690 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20  ORY_BYTES..     
1b6a0 20 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d 6f         if (pMemo
1b6b0 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ry != IntPtr.Zer
1b6c0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1b6d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b6e0 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a 65     int blockSize
1b6f0 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79 29   = Size(pMemory)
1b700 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b710 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53 69       if (blockSi
1b720 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  ze > 0)..       
1b730 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b750 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1b760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b770 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b790 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 2b  bytesAllocated +
1b7a0 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 0d 0a  = blockSize;....
1b7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7c0 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74 65          if (byte
1b7d0 73 41 6c 6c 6f 63 61 74 65 64 20 3e 20 6d 61 78  sAllocated > max
1b7e0 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74  imumBytesAllocat
1b7f0 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
1b800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b810 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c   maximumBytesAll
1b820 6f 63 61 74 65 64 20 3d 20 62 79 74 65 73 41 6c  ocated = bytesAl
1b830 6c 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20 20 20  located;..      
1b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b860 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b870 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
1b880 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1b890 70 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20 20 20 20  pMemory;..      
1b8a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b900 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74  .        /// Get
1b920 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
1b930 65 20 61 63 74 75 61 6c 20 73 69 7a 65 20 6f 66  e actual size of
1b940 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
1b950 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 74 68 61 74  emory block that
1b960 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61  ..        /// wa
1b970 73 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74  s previously obt
1b980 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 3c  ained from the <
1b990 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61  see cref="Alloca
1b9a0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
1b9b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1b9c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b9d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1b9e0 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20  "pMemory">..    
1b9f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1ba00 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1ba10 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70  e memory block p
1ba20 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
1ba30 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
1ba40 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1ba50 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e  ef="Allocate" />
1ba60 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1ba70 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1ba80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1ba90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1baa0 2f 2f 20 54 68 65 20 61 63 74 75 61 6c 20 73 69  // The actual si
1bab0 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  ze, in bytes, of
1bac0 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63   the memory bloc
1bad0 6b 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20  k specified via 
1bae0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1baf0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e   native pointer.
1bb00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1bb10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1bb20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1bb30 69 6e 74 20 53 69 7a 65 28 49 6e 74 50 74 72 20  int Size(IntPtr 
1bb40 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20  pMemory)..      
1bb50 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45    {..#if !SQLITE
1bb60 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20  _STANDARD..     
1bb70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
1bb80 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1bb90 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  s.sqlite3_malloc
1bba0 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 70 4d  _size_interop(pM
1bbb0 65 6d 6f 72 79 29 3b 0d 0a 23 65 6c 69 66 20 54  emory);..#elif T
1bbc0 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45  RACK_MEMORY_BYTE
1bbd0 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  S..            /
1bbe0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
1bbf0 2f 20 48 41 43 4b 3a 20 4f 6b 2c 20 77 65 20 63  / HACK: Ok, we c
1bc00 61 6e 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 20  annot determine 
1bc10 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
1bc20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 3b 0d 0a 20  memory block;.. 
1bc30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1bc40 20 20 20 20 74 68 65 72 65 66 6f 72 65 2c 20 6a      therefore, j
1bc50 75 73 74 20 74 72 61 63 6b 20 6e 75 6d 62 65 72  ust track number
1bc60 20 6f 66 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20   of allocations 
1bc70 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20  instead...      
1bc80 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1bc90 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 4d        return (pM
1bca0 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e  emory != IntPtr.
1bcb0 5a 65 72 6f 29 20 3f 20 31 20 3a 20 30 3b 0d 0a  Zero) ? 1 : 0;..
1bcc0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
1bcd0 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23 65     return 0;..#e
1bce0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1bcf0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1bd50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1bd60 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61       /// Frees a
1bd70 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72   memory block pr
1bd80 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65  eviously obtaine
1bd90 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
1bda0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1bdb0 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20  f="Allocate" /> 
1bdc0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1bdd0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1bde0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1bdf0 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72  ram name="pMemor
1be00 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
1be10 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1be20 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72  ter to the memor
1be30 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73  y block previous
1be40 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
1be50 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1be60 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c  / <see cref="All
1be70 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ocate" /> method
1be80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1be90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1bea0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
1beb0 6f 69 64 20 46 72 65 65 28 49 6e 74 50 74 72 20  oid Free(IntPtr 
1bec0 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20  pMemory)..      
1bed0 20 20 7b 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d    {..#if TRACK_M
1bee0 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20  EMORY_BYTES..   
1bef0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65           if (pMe
1bf00 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a  mory != IntPtr.Z
1bf10 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1bf20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1bf30 20 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69       int blockSi
1bf40 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72  ze = Size(pMemor
1bf50 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
1bf60 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b         if (block
1bf70 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20  Size > 0)..     
1bf80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfa0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1bfb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1bfc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfe0 20 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64    bytesAllocated
1bff0 20 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a   -= blockSize;..
1c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c010 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1c020 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c030 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1c040 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1c050 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1c060 64 73 2e 73 71 6c 69 74 65 33 5f 66 72 65 65 28  ds.sqlite3_free(
1c070 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20 20 20  pMemory);..     
1c080 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
1c090 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
1c0a0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1c0b0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1c110 6e 20 53 51 4c 69 74 65 53 74 72 69 6e 67 20 53  n SQLiteString S
1c120 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20  tatic Class..   
1c130 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1c140 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
1c150 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74  ss contains stat
1c160 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20  ic methods that 
1c170 61 72 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c  are used to deal
1c180 20 77 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20   with native..  
1c190 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69    /// UTF-8 stri
1c1a0 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 62  ng pointers to b
1c1b0 65 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20  e used with the 
1c1c0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1c1d0 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
1c1e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
1c1f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
1c200 61 73 73 20 53 51 4c 69 74 65 53 74 72 69 6e 67  ass SQLiteString
1c210 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1c220 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
1c230 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20   Constants..    
1c240 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1c250 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1c260 68 69 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d  his is the maxim
1c270 75 6d 20 70 6f 73 73 69 62 6c 65 20 6c 65 6e 67  um possible leng
1c280 74 68 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  th for the nativ
1c290 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 0d  e UTF-8 encoded.
1c2a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
1c2b0 69 6e 67 73 20 75 73 65 64 20 77 69 74 68 20 74  ings used with t
1c2c0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1c2d0 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
1c2e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1c2f0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1c300 20 73 74 61 74 69 63 20 69 6e 74 20 54 68 69 72   static int Thir
1c310 74 79 42 69 74 73 20 3d 20 30 78 33 66 66 66 66  tyBits = 0x3ffff
1c320 66 66 66 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  fff;....        
1c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c370 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1c380 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1c390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c3a0 69 73 20 69 73 20 74 68 65 20 3c 73 65 65 20 63  is is the <see c
1c3b0 72 65 66 3d 22 45 6e 63 6f 64 69 6e 67 22 20 2f  ref="Encoding" /
1c3c0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1c3d0 65 20 75 73 65 64 20 74 6f 20 68 61 6e 64 6c 65  e used to handle
1c3e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
1c3f0 6e 76 65 72 73 69 6f 6e 73 20 66 72 6f 6d 2f 74  nversions from/t
1c400 6f 20 55 54 46 2d 38 2e 0d 0a 20 20 20 20 20 20  o UTF-8...      
1c410 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1c420 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1c430 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
1c440 79 20 45 6e 63 6f 64 69 6e 67 20 55 74 66 38 45  y Encoding Utf8E
1c450 6e 63 6f 64 69 6e 67 20 3d 20 45 6e 63 6f 64 69  ncoding = Encodi
1c460 6e 67 2e 55 54 46 38 3b 0d 0a 20 20 20 20 20 20  ng.UTF8;..      
1c470 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1c480 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1c490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1c4d0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
1c4e0 6f 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e  on UTF-8 Encodin
1c4f0 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  g Helper Methods
1c500 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c510 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c520 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68   /// Converts th
1c530 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61  e specified mana
1c540 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20  ged string into 
1c550 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69  the UTF-8 encodi
1c560 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  ng and..        
1c570 2f 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65 20  /// returns the 
1c580 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 63  array of bytes c
1c590 6f 6e 74 61 69 6e 69 6e 67 20 69 74 73 20 72 65  ontaining its re
1c5a0 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 6e 20  presentation in 
1c5b0 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  that..        //
1c5c0 2f 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a 20 20 20  / encoding...   
1c5d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1c5e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1c5f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1c600 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1c610 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
1c620 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74  tring to convert
1c630 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c640 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1c650 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1c660 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1c670 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 63  array of bytes c
1c680 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 72 65  ontaining the re
1c690 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20  presentation of 
1c6a0 74 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20  the managed..   
1c6b0 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20       /// string 
1c6c0 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63  in the UTF-8 enc
1c6d0 6f 64 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70  oding or null up
1c6e0 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
1c6f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1c700 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1c710 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65 5b  lic static byte[
1c720 5d 20 47 65 74 55 74 66 38 42 79 74 65 73 46 72  ] GetUtf8BytesFr
1c730 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  omString(..     
1c740 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
1c750 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
1c760 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1c770 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
1c780 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
1c790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1c7a0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1c7b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1c7c0 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47  n Utf8Encoding.G
1c7d0 65 74 42 79 74 65 73 28 76 61 6c 75 65 29 3b 0d  etBytes(value);.
1c7e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1c7f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c840 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1c850 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c860 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
1c870 20 73 70 65 63 69 66 69 65 64 20 61 72 72 61 79   specified array
1c880 20 6f 66 20 62 79 74 65 73 20 72 65 70 72 65 73   of bytes repres
1c890 65 6e 74 69 6e 67 20 61 20 73 74 72 69 6e 67 20  enting a string 
1c8a0 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1c8b0 2f 2f 2f 20 55 54 46 2d 38 20 65 6e 63 6f 64 69  /// UTF-8 encodi
1c8c0 6e 67 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  ng and returns a
1c8d0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e   managed string.
1c8e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c8f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1c900 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c910 65 3d 22 62 79 74 65 73 22 3e 0d 0a 20 20 20 20  e="bytes">..    
1c920 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
1c930 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f  y of bytes to co
1c940 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1c950 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1c960 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1c970 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1c980 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72   The managed str
1c990 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e  ing or null upon
1c9a0 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
1c9b0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1c9c0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1c9d0 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
1c9e0 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  GetStringFromUtf
1c9f0 38 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20 20  8Bytes(..       
1ca00 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65       byte[] byte
1ca10 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
1ca20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1ca30 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74           if (byt
1ca40 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
1ca50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1ca60 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  urn null;....#if
1ca70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ca80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ca90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1caa0 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74  Utf8Encoding.Get
1cab0 53 74 72 69 6e 67 28 62 79 74 65 73 29 3b 0d 0a  String(bytes);..
1cac0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
1cad0 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e     return Utf8En
1cae0 63 6f 64 69 6e 67 2e 47 65 74 53 74 72 69 6e 67  coding.GetString
1caf0 28 62 79 74 65 73 2c 20 30 2c 20 62 79 74 65 73  (bytes, 0, bytes
1cb00 2e 4c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64 69  .Length);..#endi
1cb10 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  f..        }..  
1cb20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1cb30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
1cb90 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74 72  region UTF-8 Str
1cba0 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ing Helper Metho
1cbb0 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
1cbc0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1cbd0 20 20 20 2f 2f 2f 20 50 72 6f 62 65 73 20 61 20     /// Probes a 
1cbe0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1cbf0 6f 20 61 20 73 74 72 69 6e 67 20 69 6e 20 74 68  o a string in th
1cc00 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67  e UTF-8 encoding
1cc10 20 66 6f 72 20 69 74 73 0d 0a 20 20 20 20 20 20   for its..      
1cc20 20 20 2f 2f 2f 20 74 65 72 6d 69 6e 61 74 69 6e    /// terminatin
1cc30 67 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72 2c  g NUL character,
1cc40 20 77 69 74 68 69 6e 20 74 68 65 20 73 70 65 63   within the spec
1cc50 69 66 69 65 64 20 6c 65 6e 67 74 68 20 6c 69 6d  ified length lim
1cc60 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  it...        ///
1cc70 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1cc80 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1cc90 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a  name="pValue">..
1cca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ccb0 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1ccc0 6e 61 74 65 64 20 73 74 72 69 6e 67 20 70 6f 69  nated string poi
1ccd0 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nter...        /
1cce0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ccf0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1cd00 6e 61 6d 65 3d 22 6c 69 6d 69 74 22 3e 0d 0a 20  name="limit">.. 
1cd10 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1cd20 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66  aximum length of
1cd30 20 74 68 65 20 6e 61 74 69 76 65 20 73 74 72 69   the native stri
1cd40 6e 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20  ng, in bytes... 
1cd50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1cd60 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1cd70 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1cd80 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67      /// The leng
1cd90 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  th of the native
1cda0 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65   string, in byte
1cdb0 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 74  s -OR- zero if t
1cdc0 68 65 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20  he length..     
1cdd0 20 20 20 2f 2f 2f 20 63 6f 75 6c 64 20 6e 6f 74     /// could not
1cde0 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
1cdf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1ce00 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1ce10 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
1ce20 6e 74 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42  nt ProbeForUtf8B
1ce30 79 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20 20 20  yteLength(..    
1ce40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1ce50 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  Value,..        
1ce60 20 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d 0a 20      int limit.. 
1ce70 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1ce80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ce90 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20       int length 
1cea0 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
1ceb0 20 20 20 20 69 66 20 28 28 70 56 61 6c 75 65 20      if ((pValue 
1cec0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  != IntPtr.Zero) 
1ced0 26 26 20 28 6c 69 6d 69 74 20 3e 20 30 29 29 0d  && (limit > 0)).
1cee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1cef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf00 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  do..            
1cf10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1cf20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d             if (M
1cf30 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74 65 28  arshal.ReadByte(
1cf40 70 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68 29 20  pValue, length) 
1cf50 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
1cf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1cf70 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  reak;....       
1cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1cf90 28 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d 69 74  (length >= limit
1cfa0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1cfb0 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1cfc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1cfd0 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 2b           length+
1cfe0 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
1cff0 20 20 20 20 7d 20 77 68 69 6c 65 20 28 74 72 75      } while (tru
1d000 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
1d010 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1d020 20 20 72 65 74 75 72 6e 20 6c 65 6e 67 74 68 3b    return length;
1d030 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1d040 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1d050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1d0a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d0b0 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68   /// Converts th
1d0c0 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69  e specified nati
1d0d0 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  ve NUL-terminate
1d0e0 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  d UTF-8 string p
1d0f0 6f 69 6e 74 65 72 0d 0a 20 20 20 20 20 20 20 20  ointer..        
1d100 2f 2f 2f 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67  /// into a manag
1d110 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20  ed string...    
1d120 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d130 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1d140 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61  <param name="pVa
1d150 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1d160 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55  // The native NU
1d170 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46  L-terminated UTF
1d180 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
1d190 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1d1a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1d1b0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1d1c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1d1d0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
1d1e0 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69  or null upon fai
1d1f0 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1d200 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1d210 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1d220 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72 69  atic string Stri
1d230 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
1d240 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1d250 6e 74 50 74 72 20 70 56 61 6c 75 65 0d 0a 20 20  ntPtr pValue..  
1d260 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1d270 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d280 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
1d290 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
1d2a0 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20  pValue,..       
1d2b0 20 20 20 20 20 20 20 20 20 50 72 6f 62 65 46 6f           ProbeFo
1d2c0 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68 28  rUtf8ByteLength(
1d2d0 70 56 61 6c 75 65 2c 20 54 68 69 72 74 79 42 69  pValue, ThirtyBi
1d2e0 74 73 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ts));..        }
1d2f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d340 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1d350 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1d360 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
1d370 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
1d380 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 73 74   native UTF-8 st
1d390 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 66 20  ring pointer of 
1d3a0 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
1d3b0 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65 6e 67 74         /// lengt
1d3c0 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64  h into a managed
1d3d0 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20   string...      
1d3e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1d3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1d400 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75  aram name="pValu
1d410 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1d420 20 54 68 65 20 6e 61 74 69 76 65 20 55 54 46 2d   The native UTF-
1d430 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
1d440 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d450 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1d460 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1d470 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20  ="length">..    
1d480 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67      /// The leng
1d490 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  th of the native
1d4a0 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65   string, in byte
1d4b0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1d4c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1d4d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1d4e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1d4f0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
1d500 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69  or null upon fai
1d510 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1d520 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1d530 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1d540 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72 69  atic string Stri
1d550 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
1d560 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1d570 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr pValue,.. 
1d580 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
1d590 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20  ength..         
1d5a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1d5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1d5c0 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
1d5d0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1d5e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1d5f0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
1d600 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
1d610 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  > 0)..          
1d620 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d630 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65       byte[] byte
1d640 73 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65 6e  s = new byte[len
1d650 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth];....       
1d660 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
1d670 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 62 79  .Copy(pValue, by
1d680 74 65 73 2c 20 30 2c 20 6c 65 6e 67 74 68 29 3b  tes, 0, length);
1d690 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d6a0 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 74      return GetSt
1d6b0 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79 74 65  ringFromUtf8Byte
1d6c0 73 28 62 79 74 65 73 29 3b 0d 0a 20 20 20 20 20  s(bytes);..     
1d6d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1d6e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
1d6f0 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20  tring.Empty;..  
1d700 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1d710 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d760 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1d770 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d780 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
1d790 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20  ecified managed 
1d7a0 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61  string into a na
1d7b0 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
1d7c0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1d7d0 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1d7e0 69 6e 74 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f  inter using memo
1d7f0 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ry obtained from
1d800 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1d810 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ..        /// li
1d820 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
1d830 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1d840 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1d850 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
1d860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d870 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  e managed string
1d880 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
1d890 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1d8a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1d8b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1d8c0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1d8d0 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
1d8e0 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1d8f0 69 6e 74 65 72 20 6f 72 0d 0a 20 20 20 20 20 20  inter or..      
1d900 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1d910 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e  "IntPtr.Zero" />
1d920 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1d930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1d940 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1d950 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
1d960 74 50 74 72 20 55 74 66 38 49 6e 74 50 74 72 46  tPtr Utf8IntPtrF
1d970 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
1d980 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
1d990 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
1d9a0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1d9b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d9c0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
1d9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9e0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
1d9f0 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
1da00 20 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c 74     IntPtr result
1da10 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
1da20 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
1da30 65 5b 5d 20 62 79 74 65 73 20 3d 20 47 65 74 55  e[] bytes = GetU
1da40 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69  tf8BytesFromStri
1da50 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng(value);....  
1da60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
1da70 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
1da80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1da90 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
1daa0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1dab0 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 62 79   int length = by
1dac0 74 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  tes.Length;.... 
1dad0 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
1dae0 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  t = SQLiteMemory
1daf0 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68  .Allocate(length
1db00 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20   + 1);....      
1db10 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
1db20 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1db30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1db40 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1db50 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
1db60 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70       Marshal.Cop
1db70 79 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73 75  y(bytes, 0, resu
1db80 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20  lt, length);..  
1db90 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
1dba0 6c 2e 57 72 69 74 65 42 79 74 65 28 72 65 73 75  l.WriteByte(resu
1dbb0 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0d  lt, length, 0);.
1dbc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1dbd0 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
1dbe0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1dbf0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1dc00 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1dc50 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
1dc60 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67 20  on UTF-8 String 
1dc70 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74  Array Helper Met
1dc80 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
1dc90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1dca0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1dcb0 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  s a logical arra
1dcc0 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d  y of native NUL-
1dcd0 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
1dce0 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
1dcf0 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69 6e   /// pointers in
1dd00 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d  to an array of m
1dd10 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e 0d  anaged strings..
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 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
1dd60 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
1dd70 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20   of elements in 
1dd80 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
1dd90 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20  y of native..   
1dda0 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72       /// NUL-ter
1ddb0 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1ddc0 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a  ring pointers...
1ddd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1dde0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1ddf0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
1de00 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgv">..        /
1de10 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1de20 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f 67  inter to the log
1de30 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
1de40 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
1de50 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1de60 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1de70 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65 72  inters to conver
1de80 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1de90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1dea0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1deb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1dec0 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65   array of manage
1ded0 64 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c  d strings or nul
1dee0 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
1def0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1df00 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1df10 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
1df20 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41 72  tring[] StringAr
1df30 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41  rayFromUtf8SizeA
1df40 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ndIntPtr(..     
1df50 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
1df60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1df70 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20  tPtr argv..     
1df80 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1df90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1dfa0 20 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a   if (argc < 0)..
1dfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfc0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1dfd0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1dfe0 61 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  argv == IntPtr.Z
1dff0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1e000 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1e010 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
1e020 20 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75 6c    string[] resul
1e030 74 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 61  t = new string[a
1e040 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rgc];....       
1e050 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e       for (int in
1e060 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20  dex = 0, offset 
1e070 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
1e080 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20            index 
1e090 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b  < result.Length;
1e0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e0b0 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f        index++, o
1e0c0 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e  ffset += IntPtr.
1e0d0 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20  Size)..         
1e0e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e0f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 72        IntPtr pAr
1e100 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  g = SQLiteMarsha
1e110 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72 67  l.ReadIntPtr(arg
1e120 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  v, offset);.... 
1e130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e140 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28  esult[index] = (
1e150 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a  pArg != IntPtr.Z
1e160 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ero) ?..        
1e170 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
1e180 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
1e190 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a  (pArg) : null;..
1e1a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1e1b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1e1c0 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
1e1d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1e1e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e220 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1e230 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1e240 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1e250 43 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72 61  Converts an arra
1e260 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72  y of managed str
1e270 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72 72  ings into an arr
1e280 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20  ay of native..  
1e290 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65        /// NUL-te
1e2a0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
1e2b0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d  tring pointers..
1e2c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1e2d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1e2e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1e2f0 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
1e300 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
1e310 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72  y of managed str
1e320 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ings to convert.
1e330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1e340 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1e350 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1e360 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
1e370 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e  rray of native N
1e380 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
1e390 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1e3a0 65 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20  ers or null..   
1e3b0 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61       /// upon fa
1e3c0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1e3d0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1e3e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1e3f0 74 61 74 69 63 20 49 6e 74 50 74 72 5b 5d 20 55  tatic IntPtr[] U
1e400 74 66 38 49 6e 74 50 74 72 41 72 72 61 79 46 72  tf8IntPtrArrayFr
1e410 6f 6d 53 74 72 69 6e 67 41 72 72 61 79 28 0d 0a  omStringArray(..
1e420 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1e430 6e 67 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20  ng[] values..   
1e440 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1e450 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e460 20 20 20 69 66 20 28 76 61 6c 75 65 73 20 3d 3d     if (values ==
1e470 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1e480 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1e490 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1e4a0 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 72 65 73      IntPtr[] res
1e4b0 75 6c 74 20 3d 20 6e 65 77 20 49 6e 74 50 74 72  ult = new IntPtr
1e4c0 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 5d 3b  [values.Length];
1e4d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e4e0 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d  for (int index =
1e4f0 20 30 3b 20 69 6e 64 65 78 20 3c 20 72 65 73 75   0; index < resu
1e500 6c 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64 65 78  lt.Length; index
1e510 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
1e520 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65       result[inde
1e530 78 5d 20 3d 20 55 74 66 38 49 6e 74 50 74 72 46  x] = Utf8IntPtrF
1e540 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 73  romString(values
1e550 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20 20  [index]);....   
1e560 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1e570 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
1e580 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
1e590 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
1e5a0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1e5b0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1e5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e600 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1e610 53 51 4c 69 74 65 42 79 74 65 73 20 53 74 61 74  SQLiteBytes Stat
1e620 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  ic Class..    //
1e630 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e640 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
1e650 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20  contains static 
1e660 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65  methods that are
1e670 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77 69   used to deal wi
1e680 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f  th native..    /
1e690 2f 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6d  // pointers to m
1e6a0 65 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68 61  emory blocks tha
1e6b0 74 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e 74  t logically cont
1e6c0 61 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62 79  ain arrays of by
1e6d0 74 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20 2f  tes to be..    /
1e6e0 2f 2f 20 75 73 65 64 20 77 69 74 68 20 74 68 65  // used with the
1e6f0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1e700 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
1e710 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
1e720 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1e730 6c 61 73 73 20 53 51 4c 69 74 65 42 79 74 65 73  lass SQLiteBytes
1e740 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1e750 20 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41 72   #region Byte Ar
1e760 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ray Helper Metho
1e770 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
1e780 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1e790 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1e7a0 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
1e7b0 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61 72   to a logical ar
1e7c0 72 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66 20  ray of bytes of 
1e7d0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1e7e0 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74   specified lengt
1e7f0 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64  h into a managed
1e800 20 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20 20   byte array...  
1e810 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1e820 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1e830 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1e840 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
1e850 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1e860 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
1e870 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
1e880 62 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74  bytes to convert
1e890 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e8a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1e8b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1e8c0 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20  ="length">..    
1e8d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67      /// The leng
1e8e0 74 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  th, in bytes, of
1e8f0 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
1e900 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63  ay of bytes to c
1e910 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1e920 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1e930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1e940 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1e950 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79  / The managed by
1e960 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c  te array or null
1e970 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1e980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1e990 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e9a0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79  public static by
1e9b0 74 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72 28  te[] FromIntPtr(
1e9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1e9d0 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20  tPtr pValue,..  
1e9e0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
1e9f0 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  ngth..          
1ea00 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1ea10 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ea20 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
1ea30 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1ea40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1ea50 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1ea60 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d      if (length =
1ea70 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0)..          
1ea80 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
1ea90 20 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20   byte[0];....   
1eaa0 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20           byte[] 
1eab0 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79 74  result = new byt
1eac0 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20  e[length];....  
1ead0 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
1eae0 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 72  l.Copy(pValue, r
1eaf0 65 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74 68  esult, 0, length
1eb00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1eb10 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
1eb20 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1eb30 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1eb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1eb80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1eba0 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
1ebb0 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72  managed byte arr
1ebc0 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65  ay into a native
1ebd0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
1ebe0 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  gical..        /
1ebf0 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  // array of byte
1ec00 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1ec10 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1ec20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1ec30 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
1ec40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1ec50 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79  naged byte array
1ec60 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
1ec70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ec80 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ec90 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1eca0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1ecb0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
1ecc0 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61  ogical byte arra
1ecd0 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  y or null upon f
1ece0 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1ecf0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1ed00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1ed10 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f  static IntPtr To
1ed20 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
1ed30 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75       byte[] valu
1ed40 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
1ed50 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1ed60 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
1ed70 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
1ed80 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1ed90 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
1eda0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1edb0 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c  int length = val
1edc0 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20  ue.Length;....  
1edd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65            if (le
1ede0 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20  ngth == 0)..    
1edf0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ee00 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
1ee10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ...            I
1ee20 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20 53  ntPtr result = S
1ee30 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
1ee40 63 61 74 65 28 6c 65 6e 67 74 68 29 3b 0d 0a 0d  cate(length);...
1ee50 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1ee60 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74  (result == IntPt
1ee70 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1ee80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ee90 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
1eea0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
1eeb0 68 61 6c 2e 43 6f 70 79 28 76 61 6c 75 65 2c 20  hal.Copy(value, 
1eec0 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74  0, result, lengt
1eed0 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
1eee0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
1eef0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1ef00 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1ef10 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1ef20 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1ef30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1ef80 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1ef90 4d 61 72 73 68 61 6c 20 53 74 61 74 69 63 20 43  Marshal Static C
1efa0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
1efb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1efc0 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74   This class cont
1efd0 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68  ains static meth
1efe0 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ods that are use
1eff0 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 73 65 76  d to perform sev
1f000 65 72 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 6c 6f  eral..    /// lo
1f010 77 2d 6c 65 76 65 6c 20 64 61 74 61 20 6d 61 72  w-level data mar
1f020 73 68 61 6c 6c 69 6e 67 20 74 61 73 6b 73 20 62  shalling tasks b
1f030 65 74 77 65 65 6e 20 6e 61 74 69 76 65 20 61 6e  etween native an
1f040 64 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  d managed code..
1f050 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1f060 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
1f070 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 53  l static class S
1f080 51 4c 69 74 65 4d 61 72 73 68 61 6c 0d 0a 20 20  QLiteMarshal..  
1f090 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
1f0a0 67 69 6f 6e 20 49 6e 74 50 74 72 20 48 65 6c 70  gion IntPtr Help
1f0b0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1f0c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f0d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
1f0e0 65 74 75 72 6e 73 20 61 20 6e 65 77 20 3c 73 65  eturns a new <se
1f0f0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
1f100 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1f110 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d  ce based on the.
1f120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  .        /// spe
1f130 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1f140 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
1f150 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 6e 64  ect instance and
1f160 20 61 6e 20 69 6e 74 65 67 65 72 0d 0a 20 20 20   an integer..   
1f170 20 20 20 20 20 2f 2f 2f 20 6f 66 66 73 65 74 2e       /// offset.
1f180 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f190 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1f1a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1f1b0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
1f1c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1f1d0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
1f1e0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1f1f0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
1f200 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
1f210 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
1f220 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
1f230 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f250 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
1f260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f270 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
1f280 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
1f290 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 74  emory location t
1f2a0 68 61 74 20 74 68 65 20 6e 65 77 0d 0a 20 20 20  hat the new..   
1f2b0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1f2c0 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
1f2d0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 73  bject instance s
1f2e0 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 2e 0d  hould point to..
1f2f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1f300 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1f310 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1f320 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65        /// The ne
1f330 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  w <see cref="Int
1f340 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
1f350 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
1f360 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1f370 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f380 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 49   static IntPtr I
1f390 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d  ntPtrForOffset(.
1f3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1f3b0 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
1f3c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
1f3d0 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  fset..          
1f3e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1f3f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1f400 72 6e 20 6e 65 77 20 49 6e 74 50 74 72 28 70 6f  rn new IntPtr(po
1f410 69 6e 74 65 72 2e 54 6f 49 6e 74 36 34 28 29 20  inter.ToInt64() 
1f420 2b 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20  + offset);..    
1f430 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f440 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f490 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f4a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
1f4b0 6f 75 6e 64 73 20 75 70 20 61 6e 20 69 6e 74 65  ounds up an inte
1f4c0 67 65 72 20 73 69 7a 65 20 74 6f 20 74 68 65 20  ger size to the 
1f4d0 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 20 6f 66  next multiple of
1f4e0 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2e 0d   the alignment..
1f4f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1f500 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f510 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f520 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20  ="size">..      
1f530 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20    /// The size, 
1f540 69 6e 20 62 79 74 65 73 2c 20 74 6f 20 62 65 20  in bytes, to be 
1f550 72 6f 75 6e 64 65 64 20 75 70 2e 0d 0a 20 20 20  rounded up...   
1f560 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1f570 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f580 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69 67  param name="alig
1f590 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  nment">..       
1f5a0 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 69 72 65   /// The require
1f5b0 64 20 61 6c 69 67 6e 6d 65 6e 74 20 66 6f 72 20  d alignment for 
1f5c0 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65  the return value
1f5d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f5e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1f5f0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1f600 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f610 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20  size, in bytes, 
1f620 72 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 74 68  rounded up to th
1f630 65 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 20  e next multiple 
1f640 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
1f650 2f 2f 2f 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 20  /// alignment.  
1f660 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 65  This value may e
1f670 6e 64 20 75 70 20 62 65 69 6e 67 20 74 68 65 20  nd up being the 
1f680 73 61 6d 65 20 61 73 20 74 68 65 20 6f 72 69 67  same as the orig
1f690 69 6e 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  inal..        //
1f6a0 2f 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20  / size...       
1f6b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1f6c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f6d0 73 74 61 74 69 63 20 69 6e 74 20 52 6f 75 6e 64  static int Round
1f6e0 55 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Up(..           
1f6f0 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20 20   int size,..    
1f700 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67          int alig
1f710 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
1f720 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1f730 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1f740 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f   alignmentMinusO
1f750 6e 65 20 3d 20 61 6c 69 67 6e 6d 65 6e 74 20 2d  ne = alignment -
1f760 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
1f770 20 72 65 74 75 72 6e 20 28 28 73 69 7a 65 20 2b   return ((size +
1f780 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f   alignmentMinusO
1f790 6e 65 29 20 26 20 7e 61 6c 69 67 6e 6d 65 6e 74  ne) & ~alignment
1f7a0 4d 69 6e 75 73 4f 6e 65 29 3b 0d 0a 20 20 20 20  MinusOne);..    
1f7b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f7c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f800 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f810 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f820 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
1f830 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 6f 66  etermines the of
1f840 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20  fset, in bytes, 
1f850 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75  of the next stru
1f860 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
1f870 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1f880 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1f890 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1f8a0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
1f8b0 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65 74    /// The offset
1f8c0 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74  , in bytes, of t
1f8d0 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75 63  he current struc
1f8e0 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
1f8f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1f900 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1f910 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a  <param name="siz
1f920 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1f930 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79   The size, in by
1f940 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72  tes, of the curr
1f950 65 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ent structure me
1f960 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
1f970 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f980 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f990 6e 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22  name="alignment"
1f9a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f9b0 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 69 6e  he alignment, in
1f9c0 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e   bytes, of the n
1f9d0 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ext structure me
1f9e0 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
1f9f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1fa00 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1fa10 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1fa20 54 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62  The offset, in b
1fa30 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65 78  ytes, of the nex
1fa40 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62  t structure memb
1fa50 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
1fa60 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1fa70 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1fa80 69 63 20 69 6e 74 20 4e 65 78 74 4f 66 66 73 65  ic int NextOffse
1fa90 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
1faa0 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
1fab0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
1fac0 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ize,..          
1fad0 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d    int alignment.
1fae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1faf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fb00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 6f         return Ro
1fb10 75 6e 64 55 70 28 6f 66 66 73 65 74 20 2b 20 73  undUp(offset + s
1fb20 69 7a 65 2c 20 61 6c 69 67 6e 6d 65 6e 74 29 3b  ize, alignment);
1fb30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1fb40 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1fb50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fba0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
1fbb0 65 67 69 6f 6e 20 4d 61 72 73 68 61 6c 20 52 65  egion Marshal Re
1fbc0 61 64 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ad Helper Method
1fbd0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
1fbe0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1fbf0 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73    /// Reads a <s
1fc00 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
1fc10 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  /> value from th
1fc20 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
1fc30 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
1fc40 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
1fc50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1fc60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1fc70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
1fc80 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
1fc90 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1fca0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
1fcb0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
1fcc0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
1fcd0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
1fce0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
1fcf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fd00 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1fd10 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1fd20 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
1fd30 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
1fd40 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
1fd50 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
1fd60 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
1fd70 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1fd80 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
1fd90 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
1fda0 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
1fdb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fdc0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1fdd0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1fde0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1fdf0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
1fe00 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65   /> value at the
1fe10 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
1fe20 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
1fe30 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1fe40 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1fe50 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 52  lic static int R
1fe60 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  eadInt32(..     
1fe70 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
1fe80 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
1fe90 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
1fea0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1feb0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
1fec0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1fed0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1fee0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
1fef0 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70  shal.ReadInt32(p
1ff00 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b  ointer, offset);
1ff10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
1ff20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
1ff30 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 49 6e  hal.ReadInt32(In
1ff40 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
1ff50 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b  inter, offset));
1ff60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1ff70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1ff80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1ffd0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1ffe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
1fff0 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ds a <see cref="
20000 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
20010 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69  from the specifi
20020 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
20030 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
20040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20050 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20060 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20070 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
20080 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
20090 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
200a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
200b0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
200c0 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
200d0 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
200e0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
200f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20100 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20110 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
20120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20130 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
20140 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
20150 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
20160 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
20170 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
20180 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
20190 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
201a0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
201b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
201c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
201d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
201e0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
201f0 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
20200 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65   at the specifie
20210 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  d memory locatio
20220 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
20230 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
20240 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
20250 63 20 6c 6f 6e 67 20 52 65 61 64 49 6e 74 36 34  c long ReadInt64
20260 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
20270 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
20280 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
20290 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
202a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
202b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
202c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
202d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
202e0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
202f0 64 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20  dInt64(pointer, 
20300 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d  offset);..#else.
20310 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
20320 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
20330 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
20340 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
20350 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66  ffset));..#endif
20360 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
20370 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
20380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
203c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
203d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
203e0 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65   /// Reads a <se
203f0 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
20400 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  /> value from th
20410 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
20420 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
20430 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
20440 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
20450 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20460 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
20470 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
20480 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
20490 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
204a0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
204b0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
204c0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
204d0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
204e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
204f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20500 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20510 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
20520 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
20530 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
20540 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
20550 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
20560 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
20570 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
20580 22 20 2f 3e 20 74 6f 20 62 65 20 72 65 61 64 20  " /> to be read 
20590 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
205a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
205b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
205c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
205d0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
205e0 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
205f0 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70 65  value at the spe
20600 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f  cified memory lo
20610 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
20620 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
20630 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20640 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 52 65  static double Re
20650 61 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  adDouble(..     
20660 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
20670 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
20680 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
20690 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
206a0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
206b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
206c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
206d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 42 69 74        return Bit
206e0 43 6f 6e 76 65 72 74 65 72 2e 49 6e 74 36 34 42  Converter.Int64B
206f0 69 74 73 54 6f 44 6f 75 62 6c 65 28 4d 61 72 73  itsToDouble(Mars
20700 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d 0a  hal.ReadInt64(..
20710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20720 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
20730 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
20740 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 42 69         return Bi
20750 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 44 6f 75  tConverter.ToDou
20760 62 6c 65 28 42 69 74 43 6f 6e 76 65 72 74 65 72  ble(BitConverter
20770 2e 47 65 74 42 79 74 65 73 28 0d 0a 20 20 20 20  .GetBytes(..    
20780 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
20790 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e  hal.ReadInt64(In
207a0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
207b0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 29  inter, offset)))
207c0 2c 20 30 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  , 0);..#endif.. 
207d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
207e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
207f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
20840 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
20850 2f 20 52 65 61 64 73 20 61 6e 20 3c 73 65 65 20  / Reads an <see 
20860 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
20870 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
20880 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
20890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
208a0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
208b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
208c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
208d0 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
208e0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
208f0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
20900 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
20910 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
20920 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
20930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
20940 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
20950 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20960 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20970 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
20980 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
20990 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
209a0 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
209b0 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
209c0 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
209d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
209e0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
209f0 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  /> value to be r
20a00 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ead is located..
20a10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20a20 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20a30 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20a40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
20a50 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
20a60 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65   /> value at the
20a70 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
20a80 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
20a90 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
20aa0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
20ab0 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
20ac0 72 20 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20  r ReadIntPtr(.. 
20ad0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
20ae0 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
20af0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
20b00 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
20b10 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
20b20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20b30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20b40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20b50 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
20b60 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  Ptr(pointer, off
20b70 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  set);..#else..  
20b80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20b90 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
20ba0 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr(IntPtrForOff
20bb0 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
20bc0 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  set));..#endif..
20bd0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20be0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
20bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
20c50 69 6f 6e 20 4d 61 72 73 68 61 6c 20 57 72 69 74  ion Marshal Writ
20c60 65 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  e Helper Methods
20c70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20c80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20c90 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c   /// Writes an <
20ca0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
20cb0 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
20cc0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
20cd0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
20ce0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
20cf0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
20d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20d10 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
20d20 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
20d30 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20d40 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
20d50 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
20d60 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
20d70 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
20d80 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
20d90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20da0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20db0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20dc0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
20dd0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
20de0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
20df0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
20e00 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
20e10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20e20 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
20e30 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
20e40 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
20e50 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
20e60 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
20e70 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20e80 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
20e90 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
20ea0 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
20eb0 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
20ec0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20ed0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20ee0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
20ef0 69 64 20 57 72 69 74 65 49 6e 74 33 32 28 0d 0a  id WriteInt32(..
20f00 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
20f10 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
20f20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
20f30 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
20f40 20 20 69 6e 74 20 76 61 6c 75 65 0d 0a 20 20 20    int value..   
20f50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
20f60 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
20f70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20f80 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
20f90 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
20fa0 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f  Int32(pointer, o
20fb0 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a  ffset, value);..
20fc0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
20fd0 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
20fe0 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f  Int32(IntPtrForO
20ff0 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
21000 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d  ffset), value);.
21010 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21020 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
21030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21070 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21080 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21090 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
210a0 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  es an <see cref=
210b0 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
210c0 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
210d0 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
210e0 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
210f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
21100 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21110 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21120 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
21130 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21140 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21150 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21160 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
21170 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
21180 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
21190 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
211a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
211b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
211c0 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
211d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
211e0 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
211f0 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
21200 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
21210 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
21220 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
21230 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
21240 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73  to be written is
21250 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
21260 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21280 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
21290 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
212a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
212b0 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  t64" /> value to
212c0 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20   write...       
212d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
212e0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
212f0 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 49  atic void WriteI
21300 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20  nt64(..         
21310 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
21320 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
21330 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  int offset,..   
21340 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76 61           long va
21350 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
21360 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
21370 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21380 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21390 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
213a0 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70 6f  al.WriteInt64(po
213b0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76  inter, offset, v
213c0 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
213d0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
213e0 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e  al.WriteInt64(In
213f0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
21400 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20  inter, offset), 
21410 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
21420 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
21430 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
21490 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
214a0 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65  /// Writes a <se
214b0 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
214c0 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
214d0 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
214e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
214f0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
21500 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21520 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
21530 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
21540 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
21550 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
21560 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
21570 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
21580 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
21590 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
215a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
215b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
215c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
215d0 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
215e0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
215f0 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
21600 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
21610 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
21620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
21630 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
21640 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
21650 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
21660 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21670 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
21680 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21690 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
216a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
216b0 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
216c0 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65  > value to write
216d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
216e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
216f0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
21700 6f 69 64 20 57 72 69 74 65 44 6f 75 62 6c 65 28  oid WriteDouble(
21710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
21720 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20  tPtr pointer,.. 
21730 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
21740 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
21750 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65      double value
21760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
21770 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
21780 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21790 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
217a0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
217b0 57 72 69 74 65 49 6e 74 36 34 28 70 6f 69 6e 74  WriteInt64(point
217c0 65 72 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  er, offset,..   
217d0 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74               Bit
217e0 43 6f 6e 76 65 72 74 65 72 2e 44 6f 75 62 6c 65  Converter.Double
217f0 54 6f 49 6e 74 36 34 42 69 74 73 28 76 61 6c 75  ToInt64Bits(valu
21800 65 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  e));..#else..   
21810 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
21820 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74 50  .WriteInt64(IntP
21830 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
21840 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 0d 0a 20  ter, offset),.. 
21850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42                 B
21860 69 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 49 6e  itConverter.ToIn
21870 74 36 34 28 42 69 74 43 6f 6e 76 65 72 74 65 72  t64(BitConverter
21880 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29  .GetBytes(value)
21890 2c 20 30 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  , 0));..#endif..
218a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
218b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
218c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
218d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
218e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
218f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
21910 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21920 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65  // Writes a <see
21930 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
21940 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73  > value to the s
21950 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
21960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
21970 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
21980 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
219a0 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
219b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
219c0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
219d0 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
219e0 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
219f0 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
21a00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
21a10 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
21a20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
21a30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
21a40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
21a50 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
21a60 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
21a70 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
21a80 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
21a90 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
21aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
21ab0 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
21ac0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
21ad0 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
21ae0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21af0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
21b00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21b10 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
21b20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
21b30 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
21b40 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
21b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21b60 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21b70 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
21b80 69 64 20 57 72 69 74 65 49 6e 74 50 74 72 28 0d  id WriteIntPtr(.
21b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
21ba0 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
21bb0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
21bc0 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
21bd0 20 20 20 49 6e 74 50 74 72 20 76 61 6c 75 65 0d     IntPtr value.
21be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
21bf0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
21c00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21c10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
21c20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
21c30 72 69 74 65 49 6e 74 50 74 72 28 70 6f 69 6e 74  riteIntPtr(point
21c40 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75  er, offset, valu
21c50 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
21c60 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
21c70 57 72 69 74 65 49 6e 74 50 74 72 28 49 6e 74 50  WriteIntPtr(IntP
21c80 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
21c90 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61  ter, offset), va
21ca0 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lue);..#endif.. 
21cb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
21cc0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
21cd0 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
21d20 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
21d30 6f 6e 20 4f 62 6a 65 63 74 20 48 65 6c 70 65 72  on Object Helper
21d40 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
21d50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21d60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 6e  .        /// Gen
21d70 65 72 61 74 65 73 20 61 20 68 61 73 68 20 63 6f  erates a hash co
21d80 64 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65  de value for the
21d90 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
21da0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
21db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21dc0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
21dd0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21de0 54 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  The object insta
21df0 6e 63 65 20 75 73 65 64 20 74 6f 20 63 61 6c 63  nce used to calc
21e00 75 6c 61 74 65 20 74 68 65 20 68 61 73 68 20 63  ulate the hash c
21e10 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
21e20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21e30 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21e40 61 6d 65 3d 22 69 64 65 6e 74 69 74 79 22 3e 0d  ame="identity">.
21e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
21e60 2d 7a 65 72 6f 20 69 66 20 64 69 66 66 65 72 65  -zero if differe
21e70 6e 74 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  nt object instan
21e80 63 65 73 20 77 69 74 68 20 74 68 65 20 73 61 6d  ces with the sam
21e90 65 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 0d 0a  e value should..
21ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 67 65 6e 65          /// gene
21eb0 72 61 74 65 20 64 69 66 66 65 72 65 6e 74 20 68  rate different h
21ec0 61 73 68 20 63 6f 64 65 73 2c 20 77 68 65 72 65  ash codes, where
21ed0 20 61 70 70 6c 69 63 61 62 6c 65 2e 20 20 54 68   applicable.  Th
21ee0 69 73 20 70 61 72 61 6d 65 74 65 72 0d 0a 20 20  is parameter..  
21ef0 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 6f        /// has no
21f00 20 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e   effect on the .
21f10 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
21f20 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20  ework...        
21f30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21f40 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
21f50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
21f60 20 54 68 65 20 68 61 73 68 20 63 6f 64 65 20 76   The hash code v
21f70 61 6c 75 65 20 2d 4f 52 2d 20 7a 65 72 6f 20 69  alue -OR- zero i
21f80 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73 20  f the object is 
21f90 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
21fa0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
21fb0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
21fc0 61 74 69 63 20 69 6e 74 20 47 65 74 48 61 73 68  atic int GetHash
21fd0 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Code(..         
21fe0 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c     object value,
21ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
22000 6f 6c 20 69 64 65 6e 74 69 74 79 0d 0a 20 20 20  ol identity..   
22010 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
22020 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
22030 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22040 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
22050 20 20 20 69 66 20 28 69 64 65 6e 74 69 74 79 29     if (identity)
22060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22070 20 20 72 65 74 75 72 6e 20 52 75 6e 74 69 6d 65    return Runtime
22080 48 65 6c 70 65 72 73 2e 47 65 74 48 61 73 68 43  Helpers.GetHashC
22090 6f 64 65 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ode(value);..#en
220a0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
220b0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
220c0 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 3b 0d  null) return 0;.
220d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
220e0 75 72 6e 20 76 61 6c 75 65 2e 47 65 74 48 61 73  urn value.GetHas
220f0 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20  hCode();..      
22100 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
22110 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
22120 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
22130 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
22140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22180 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
22190 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 42 61   SQLiteModule Ba
221a0 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  se Class..    //
221b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
221c0 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
221d0 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61 6e  represents a man
221e0 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  aged virtual tab
221f0 6c 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  le module implem
22200 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  entation...    /
22210 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65 61  // It is not sea
22220 6c 65 64 20 61 6e 64 20 6d 75 73 74 20 62 65 20  led and must be 
22230 75 73 65 64 20 61 73 20 74 68 65 20 62 61 73 65  used as the base
22240 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a   class for any..
22250 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66      /// user-def
22260 69 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ined virtual tab
22270 6c 65 20 6d 6f 64 75 6c 65 20 63 6c 61 73 73 65  le module classe
22280 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e  s implemented in
22290 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a   managed code...
222a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
222b0 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61  y>..    public a
222c0 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51  bstract class SQ
222d0 4c 69 74 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20  LiteModule :..  
222e0 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74            ISQLit
222f0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2c 20  eManagedModule, 
22300 2f 2a 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  /*ISQLiteNativeM
22310 6f 64 75 6c 65 2c 2a 2f 0d 0a 20 20 20 20 20 20  odule,*/..      
22320 20 20 20 20 20 20 49 44 69 73 70 6f 73 61 62 6c        IDisposabl
22330 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20  e /* NOT SEALED 
22340 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  */..    {..     
22350 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
22360 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 50 72  eNativeModule Pr
22370 69 76 61 74 65 20 43 6c 61 73 73 0d 0a 20 20 20  ivate Class..   
22380 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
22390 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
223a0 54 68 69 73 20 63 6c 61 73 73 20 69 6d 70 6c 65  This class imple
223b0 6d 65 6e 74 73 20 74 68 65 20 3c 73 65 65 20 63  ments the <see c
223c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
223d0 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
223e0 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
223f0 61 63 65 20 62 79 20 66 6f 72 77 61 72 64 69 6e  ace by forwardin
22400 67 20 74 68 6f 73 65 20 6d 65 74 68 6f 64 20 63  g those method c
22410 61 6c 6c 73 20 74 6f 20 74 68 65 0d 0a 20 20 20  alls to the..   
22420 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
22430 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
22440 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22450 61 6e 63 65 20 69 74 20 63 6f 6e 74 61 69 6e 73  ance it contains
22460 2e 20 20 49 66 20 74 68 65 0d 0a 20 20 20 20 20  .  If the..     
22470 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64     /// contained
22480 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
22490 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
224a0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
224b0 6e 75 6c 6c 2c 20 61 6c 6c 0d 0a 20 20 20 20 20  null, all..     
224c0 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20     /// the <see 
224d0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
224e0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6d 65  iveModule" /> me
224f0 74 68 6f 64 73 20 73 69 6d 70 6c 79 20 67 65 6e  thods simply gen
22500 65 72 61 74 65 20 61 6e 0d 0a 20 20 20 20 20 20  erate an..      
22510 20 20 2f 2f 2f 20 65 72 72 6f 72 2e 0d 0a 20 20    /// error...  
22520 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
22530 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
22540 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61  ivate sealed cla
22550 73 73 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ss SQLiteNativeM
22560 6f 64 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20  odule :..       
22570 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
22580 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49 44  NativeModule, ID
22590 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20  isposable..     
225a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
225b0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
225c0 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
225d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
225e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
225f0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
22600 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 69  the value that i
22610 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f  s always used fo
22620 72 20 74 68 65 20 22 6c 6f 67 45 72 72 6f 72 73  r the "logErrors
22630 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  "..            /
22640 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  // parameter to 
22650 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74  the various stat
22660 69 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e  ic error handlin
22670 67 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64  g methods provid
22680 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
22690 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20  /// by the <see 
226a0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
226b0 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  le" /> class... 
226c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
226d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
226e0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
226f0 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c  onst bool Defaul
22700 74 4c 6f 67 45 72 72 6f 72 73 20 3d 20 74 72 75  tLogErrors = tru
22710 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
22720 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
22730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22760 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
22770 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
22780 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
22790 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
227a0 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 61 6c  value that is al
227b0 77 61 79 73 20 75 73 65 64 20 66 6f 72 20 74 68  ways used for th
227c0 65 20 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  e "logExceptions
227d0 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  "..            /
227e0 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  // parameter to 
227f0 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74  the various stat
22800 69 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e  ic error handlin
22810 67 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64  g methods provid
22820 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
22830 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20  /// by the <see 
22840 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
22850 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  le" /> class... 
22860 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
22870 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22880 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
22890 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c  onst bool Defaul
228a0 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 20 3d  tLogExceptions =
228b0 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
228c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
228d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22900 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22910 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
22920 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22930 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
22940 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
22950 65 20 74 65 78 74 20 75 73 65 64 20 77 68 65 6e  e text used when
22960 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 0d 0a   the contained..
22970 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22980 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
22990 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
229a0 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 6e  ct instance is n
229b0 6f 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20 20  ot available..  
229c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f            /// fo
229d0 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20  r any reason... 
229e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
229f0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22a00 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
22a10 6f 6e 73 74 20 73 74 72 69 6e 67 20 4d 6f 64 75  onst string Modu
22a20 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72  leNotAvailableEr
22a30 72 6f 72 4d 65 73 73 61 67 65 20 3d 0d 0a 20 20  rorMessage =..  
22a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6e                "n
22a50 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6d 70  ative module imp
22a60 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 6f 74 20  lementation not 
22a70 61 76 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20 20  available";..   
22a80 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
22a90 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
22aa0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
22ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ae0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
22af0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
22b00 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
22b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
22b20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
22b30 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
22b40 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
22b50 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
22b60 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70  stance used to p
22b70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20  rovide..        
22b80 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65      /// an imple
22b90 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
22ba0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
22bb0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
22bc0 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20   />..           
22bd0 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d   /// interface..
22be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22bf0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22c00 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
22c10 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
22c20 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  dule;..         
22c30 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
22c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
22c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22ca0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
22cb0 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
22cc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
22cd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22ce0 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
22cf0 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
22d00 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
22d10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
22d20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22d30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
22d40 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
22d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22d60 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
22d70 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
22d80 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
22d90 65 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64  e used to provid
22da0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
22db0 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  // an implementa
22dc0 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65  tion of the <see
22dd0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
22de0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a  tiveModule" />..
22df0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22e00 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20  interface...    
22e10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
22e20 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
22e30 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4e    public SQLiteN
22e40 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  ativeModule(..  
22e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
22e60 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
22e70 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
22e80 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
22e90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22ea0 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 65       this.module
22eb0 20 3d 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20   = module;..    
22ec0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22ed0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
22ee0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
22ef0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22f40 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
22f50 61 74 65 20 53 74 61 74 69 63 20 4d 65 74 68 6f  ate Static Metho
22f60 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
22f70 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22f80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
22f90 65 74 73 20 74 68 65 20 74 61 62 6c 65 20 65 72  ets the table er
22fa0 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f  ror message to o
22fb0 6e 65 20 74 68 61 74 20 69 6e 64 69 63 61 74 65  ne that indicate
22fc0 73 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  s the native..  
22fd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f            /// mo
22fe0 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
22ff0 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  ion is not avail
23000 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  able...         
23010 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23020 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23030 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
23040 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
23050 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
23060 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
23070 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
23080 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
23090 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
230a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
230b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
230c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
230d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
230e0 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ue of <see cref=
230f0 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  "SQLiteErrorCode
23100 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20  .Error" />...   
23110 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
23120 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23130 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
23140 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  tic SQLiteErrorC
23150 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ode ModuleNotAva
23160 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
23170 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23180 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
23190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
231a0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
231b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
231c0 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
231d0 28 6e 75 6c 6c 2c 20 70 56 74 61 62 2c 20 44 65  (null, pVtab, De
231e0 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d  faultLogErrors,.
231f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23200 20 20 20 20 20 44 65 66 61 75 6c 74 4c 6f 67 45       DefaultLogE
23210 78 63 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c  xceptions, Modul
23220 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72  eNotAvailableErr
23230 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20  orMessage);.... 
23240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23250 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
23260 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20  rCode.Error;..  
23270 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
23280 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
23290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
232d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
232e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
232f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74           /// Set
23300 73 20 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f  s the table erro
23310 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65  r message to one
23320 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20   that indicates 
23330 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
23340 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75          /// modu
23350 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
23360 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  n is not availab
23370 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le...           
23380 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
23390 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
233a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
233b0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
233c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
233d0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
233e0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
233f0 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 0d 0a  cursor derived..
23400 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23410 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
23420 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23430 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
23440 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
23450 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23460 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73   The value of <s
23470 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45  ee cref="SQLiteE
23480 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20  rrorCode.Error" 
23490 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  />...           
234a0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
234b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
234c0 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69  vate static SQLi
234d0 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75  teErrorCode Modu
234e0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
234f0 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20  rsorError(..    
23500 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
23510 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
23520 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
23530 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
23540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
23550 74 43 75 72 73 6f 72 45 72 72 6f 72 28 6e 75 6c  tCursorError(nul
23560 6c 2c 20 70 43 75 72 73 6f 72 2c 20 44 65 66 61  l, pCursor, Defa
23570 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ultLogErrors,.. 
23580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23590 20 20 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63     DefaultLogExc
235a0 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65 4e  eptions, ModuleN
235b0 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
235c0 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
235d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
235e0 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
235f0 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20  ode.Error;..    
23600 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23610 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
23620 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
23630 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23670 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23680 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
23690 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20  iteNativeModule 
236a0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
236b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
236c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
236d0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
236e0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
236f0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
23700 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
23710 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23720 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
23740 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a  am name="pDb">..
23750 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23760 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
23770 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
23780 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
23790 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
237a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
237b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
237c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
237d0 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20  e="pAux">..     
237e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
237f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
23800 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
23810 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
23820 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
23830 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23840 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23850 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
23860 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gc">..          
23870 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
23880 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
23890 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
238a0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
238b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
238c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
238d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
238e0 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d  am name="argv">.
238f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23900 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
23910 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
23920 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
23930 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
23940 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
23950 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
23960 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
23970 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
23980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
23990 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
239a0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
239b0 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20  ule.xCreate" /> 
239c0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
239d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
239e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
239f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
23a00 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  pError">..      
23a10 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
23a20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
23a30 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23a40 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
23a50 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
23a60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
23a70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23a80 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
23a90 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
23aa0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
23ab0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
23ac0 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
23ad0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
23ae0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
23af0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
23b00 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
23b10 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a  rCode xCreate(..
23b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b30 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
23b40 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
23b50 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
23b60 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
23b70 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
23b80 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
23b90 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
23ba0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
23bb0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
23bc0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
23bd0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20  r pError..      
23be0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
23bf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23c00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
23c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
23c30 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
23c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23c50 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
23c60 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
23c70 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
23c80 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
23c90 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
23ca0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
23cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
23cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23cd0 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51       pError = SQ
23ce0 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
23cf0 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
23d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23d10 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
23d20 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f  NotAvailableErro
23d30 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  rMessage);....  
23d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d50 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
23d60 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
23d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23d80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
23d90 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
23da0 75 6c 65 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ule.xCreate(..  
23db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dc0 20 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67    pDb, pAux, arg
23dd0 63 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74  c, argv, ref pVt
23de0 61 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b  ab, ref pError);
23df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
23e00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
23e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
23e60 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
23e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23e80 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
23e90 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
23ea0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
23eb0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
23ec0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
23ed0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23ee0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
23ef0 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20   name="pDb">..  
23f00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
23f10 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
23f20 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
23f30 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
23f40 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
23f50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23f60 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
23f70 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23f80 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20  ="pAux">..      
23f90 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
23fa0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
23fb0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23fc0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
23fd0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
23fe0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24000 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
24010 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gc">..          
24020 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24030 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24040 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
24050 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
24060 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24070 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
24080 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
24090 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
240a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
240b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
240c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
240d0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
240e0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
240f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24100 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
24110 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
24120 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
24130 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24140 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24150 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24160 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
24170 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24180 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24190 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
241a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
241b0 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20  e="pError">..   
241c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
241d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
241e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
241f0 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e  ule.xConnect" />
24200 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
24210 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
24220 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
24230 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
24240 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24250 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24260 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24270 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
24280 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24290 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
242a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
242b0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
242c0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e  eErrorCode xConn
242d0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
242e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
242f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
24300 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
24310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24320 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
24330 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
24340 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
24350 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
24360 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
24370 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
24380 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
24390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
243b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
243c0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
243d0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
243e0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
243f0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
24400 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
24410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
24420 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
24430 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
24440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
24450 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
24460 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
24470 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24480 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
24490 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
244a0 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
244b0 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
244c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244d0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
244e0 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b  leErrorMessage);
244f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24500 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
24510 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
24520 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
24530 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24540 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24550 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  rn module.xConne
24560 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
24570 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 41           pDb, pA
24580 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20  ux, argc, argv, 
24590 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20 70  ref pVtab, ref p
245a0 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  Error);..       
245b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
245c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
245d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24600 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24610 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
24620 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24630 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
24640 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
24650 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24660 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
24670 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24680 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24690 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
246a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
246b0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
246c0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
246d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
246e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
246f0 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  xBestIndex" /> m
24700 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
24710 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
24720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24730 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
24740 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  Index">..       
24750 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24760 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
24770 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
24780 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  xBestIndex" /> m
24790 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
247a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
247b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
247c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
247d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
247e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
247f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
24800 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
24810 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
24830 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
24840 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
24850 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74  eErrorCode xBest
24860 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
24870 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
24880 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
24890 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
248a0 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
248b0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
248c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
248d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
248e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
248f0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
24900 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
24910 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
24920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24930 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
24940 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
24950 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
24960 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
24970 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
24980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24990 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
249a0 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
249b0 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
249c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
249d0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74  urn module.xBest
249e0 49 6e 64 65 78 28 70 56 74 61 62 2c 20 70 49 6e  Index(pVtab, pIn
249f0 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dex);..         
24a00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24a10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
24a60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
24a70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
24a80 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24a90 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24aa0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  NativeModule.xDi
24ab0 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
24ac0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24ad0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24af0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
24b00 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
24b10 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
24b20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
24b30 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24b40 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
24b50 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
24b60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
24b70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24b80 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
24b90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
24ba0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
24bb0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
24bc0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22  ule.xDisconnect"
24bd0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24be0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
24bf0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
24c00 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
24c10 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73  teErrorCode xDis
24c20 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
24c30 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
24c40 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
24c50 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
24c60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24c70 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
24c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
24c90 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
24ca0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
24cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
24cc0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
24cd0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
24ce0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
24cf0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
24d00 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
24d10 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
24d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d30 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
24d40 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
24d50 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
24d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
24d70 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 69  eturn module.xDi
24d80 73 63 6f 6e 6e 65 63 74 28 70 56 74 61 62 29 3b  sconnect(pVtab);
24d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
24da0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24df0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
24e00 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
24e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24e20 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
24e30 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
24e40 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
24e50 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
24e60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24e70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24e80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24e90 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24eb0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
24ec0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
24ed0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22  Module.xDestroy"
24ee0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24ef0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
24f00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
24f10 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
24f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24f30 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24f40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24f50 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  veModule.xDestro
24f60 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  y" /> method... 
24f70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24f80 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
24f90 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
24fa0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
24fb0 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
24fc0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
24fd0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
24fe0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
24ff0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25000 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
25010 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
25020 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
25030 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
25040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25060 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
25070 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
25080 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
25090 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
250a0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
250b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
250c0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
250d0 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
250e0 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
250f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25100 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 65 73  turn module.xDes
25110 74 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a 20 20  troy(pVtab);..  
25120 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
25130 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 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 0d 0a  //////////////..
25180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25190 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
251a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
251b0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
251c0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
251d0 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
251e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
251f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25200 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25210 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25220 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
25230 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25240 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25250 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25260 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
25270 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25280 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25290 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
252a0 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
252b0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
252c0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
252d0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
252e0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
252f0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
25300 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25310 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
25320 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
25330 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
25340 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
25350 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
25360 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
25370 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
25380 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
25390 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
253a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
253b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70  iteErrorCode xOp
253c0 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
253d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
253e0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
253f0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
25400 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
25410 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
25420 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25430 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
25440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25450 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
25460 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
25470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
25480 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
25490 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
254a0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
254b0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
254c0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
254d0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
254e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254f0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
25500 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
25510 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
25520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25530 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4f 70  eturn module.xOp
25540 65 6e 28 70 56 74 61 62 2c 20 72 65 66 20 70 43  en(pVtab, ref pC
25550 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
25560 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
25570 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
25580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
255c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
255d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
255e0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
255f0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25600 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25610 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  Close" /> method
25620 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25630 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
25640 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25650 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
25660 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
25670 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25680 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
25690 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
256a0 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
256b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
256c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
256d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
256e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
256f0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25700 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
25710 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
25720 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
25730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25740 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
25750 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
25760 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
25770 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20   xClose(..      
25780 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
25790 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20   pCursor..      
257a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
257b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
257c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
257d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257e0 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
257f0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
25800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25810 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
25820 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
25830 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
25840 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
25850 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
25860 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
25870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25880 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
25890 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f  otAvailableCurso
258a0 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b  rError(pCursor);
258b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
258c0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
258d0 65 2e 78 43 6c 6f 73 65 28 70 43 75 72 73 6f 72  e.xClose(pCursor
258e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
258f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
25900 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25940 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
25950 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
25960 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25970 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25980 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25990 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
259a0 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
259b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
259c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
259d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
259e0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
259f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25a00 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25a10 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25a20 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
25a30 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
25a40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25a50 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
25a60 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25a70 6e 61 6d 65 3d 22 69 64 78 4e 75 6d 22 3e 0d 0a  name="idxNum">..
25a80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25a90 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
25aa0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
25ab0 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
25ac0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25ae0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
25af0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25b00 65 3d 22 69 64 78 53 74 72 22 3e 0d 0a 20 20 20  e="idxStr">..   
25b10 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25b20 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25b30 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25b40 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
25b50 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
25b60 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
25b70 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25b80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25b90 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
25ba0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25bb0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25bc0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25bd0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
25be0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25bf0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25c00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25c10 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
25c20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25c30 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25c40 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25c50 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
25c60 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
25c70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25c80 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
25c90 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
25ca0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
25cb0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
25cc0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
25cd0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
25ce0 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
25cf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25d00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
25d10 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
25d20 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
25d30 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
25d40 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
25d50 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
25d60 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64            int id
25d70 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20  xNum,..         
25d80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64         IntPtr id
25d90 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  xStr,..         
25da0 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
25db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25dc0 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
25dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
25de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25e00 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
25e10 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
25e20 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
25e30 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
25e40 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
25e50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
25e60 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
25e70 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
25e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25e90 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
25ea0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
25eb0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
25ec0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
25ed0 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
25ee0 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
25ef0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25f00 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 28 70  module.xFilter(p
25f10 43 75 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c 20  Cursor, idxNum, 
25f20 69 64 78 53 74 72 2c 20 61 72 67 63 2c 20 61 72  idxStr, argc, ar
25f30 67 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gv);..          
25f40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25f50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
25fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25fb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
25fc0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25fd0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25fe0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
25ff0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
26000 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26010 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
26020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26030 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
26040 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26050 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26060 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26070 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22  iveModule.xNext"
26080 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26090 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
260a0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
260b0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
260c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
260d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
260e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
260f0 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20  veModule.xNext" 
26100 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
26120 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26130 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
26140 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
26150 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
26160 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
26170 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
26180 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
26190 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
261a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
261b0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
261c0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
261d0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
261e0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
261f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26200 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
26210 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
26220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26230 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
26240 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
26250 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26260 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
26270 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
26280 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20  pCursor);....   
26290 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
262a0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74  urn module.xNext
262b0 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
262c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
262d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
262e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26320 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26330 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
26340 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26350 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26360 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26370 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f  e.xEof" /> metho
26380 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26390 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
263a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
263b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
263c0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
263d0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
263e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
263f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26400 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  Eof" /> method..
26410 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26420 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
26430 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
26440 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
26450 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
26460 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
26470 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f  NativeModule.xEo
26480 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  f" /> method... 
26490 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
264a0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
264b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
264c0 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20  t xEof(..       
264d0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
264e0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
264f0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
26500 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26510 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
26520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26530 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
26540 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
26550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26560 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
26570 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
26580 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
26590 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
265a0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
265b0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
265c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
265d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265e0 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
265f0 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
26600 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  r(pCursor);..   
26610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26620 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20 20   return 1;..    
26630 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
26640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26650 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
26660 45 6f 66 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20  Eof(pCursor);.. 
26670 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
26680 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d  ///////////////.
266d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
266e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
266f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26700 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26710 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26720 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
26730 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
26740 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
26750 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
26760 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26770 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
26780 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26790 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
267a0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
267b0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
267c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
267d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
267e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
267f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
26800 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
26810 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26820 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26830 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26840 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
26850 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26860 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
26870 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26880 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26890 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
268a0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
268b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
268c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
268d0 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68  xColumn" /> meth
268e0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
268f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26900 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26910 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
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 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74  .xColumn" /> met
26960 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26970 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
26980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
26990 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
269a0 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20  Code xColumn(.. 
269b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
269c0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
269d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269e0 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c  IntPtr pContext,
269f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26a00 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20    int index..   
26a10 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
26a20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26a40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
26a50 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
26a60 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
26a70 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
26a80 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
26a90 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
26aa0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
26ab0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
26ac0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26ad0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
26ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26af0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
26b00 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
26b10 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
26b20 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
26b30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
26b40 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 28 70 43 75  dule.xColumn(pCu
26b50 72 73 6f 72 2c 20 70 43 6f 6e 74 65 78 74 2c 20  rsor, pContext, 
26b60 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20  index);..       
26b70 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
26b80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
26b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
26bd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
26be0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
26bf0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26c00 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26c10 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26c20 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64  RowId" /> method
26c30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26c40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
26c50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26c60 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
26c70 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
26c80 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26c90 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26ca0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
26cb0 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
26cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26cd0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26ce0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26cf0 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
26d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26d10 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26d20 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26d30 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22  veModule.xRowId"
26d40 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26d50 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
26d60 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
26d70 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
26d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26d90 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26da0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26db0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22  veModule.xRowId"
26dc0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26dd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
26de0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
26df0 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
26e00 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77  teErrorCode xRow
26e10 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
26e20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
26e30 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
26e40 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
26e50 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20  owId..          
26e60 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
26e70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26e80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26e90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
26ea0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
26eb0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
26ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26ee0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
26ef0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
26f00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
26f10 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
26f20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
26f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26f40 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
26f50 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
26f60 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  or(pCursor);....
26f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f80 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
26f90 6f 77 49 64 28 70 43 75 72 73 6f 72 2c 20 72 65  owId(pCursor, re
26fa0 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20  f rowId);..     
26fb0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
26fc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
26fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27010 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27020 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27030 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27040 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27050 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27060 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
27070 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27080 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
27090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
270a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
270b0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
270c0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
270d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
270e0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
270f0 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Update" /> metho
27100 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27110 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27120 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
27130 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
27140 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27150 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27160 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27170 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
27180 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
27190 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
271a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
271b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
271c0 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
271d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
271e0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
271f0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27200 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e  dule.xUpdate" />
27210 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27220 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27230 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27240 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27250 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
27260 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27270 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27280 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27290 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
272a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
272b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
272c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
272d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
272e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
272f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27300 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27310 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
27320 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27330 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
27340 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
27350 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
27360 72 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a  rCode xUpdate(..
27370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27380 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
27390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
273a0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
273b0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
273c0 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
273d0 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
273e0 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20   rowId..        
273f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
27400 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27410 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
27420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27430 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
27440 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
27450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27460 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27470 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
27480 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
27490 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
274a0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
274b0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
274c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274d0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
274e0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
274f0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
27500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27510 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 55 70  eturn module.xUp
27520 64 61 74 65 28 70 56 74 61 62 2c 20 61 72 67 63  date(pVtab, argc
27530 2c 20 61 72 67 76 2c 20 72 65 66 20 72 6f 77 49  , argv, ref rowI
27540 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d);..           
27550 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
27560 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
275b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
275c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
275d0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
275e0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
275f0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
27600 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
27610 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27620 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
27630 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27640 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
27650 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27660 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27670 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27680 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
27690 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
276a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
276b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
276c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
276d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
276e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
276f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27700 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
27710 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27720 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
27730 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
27740 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
27750 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69  eErrorCode xBegi
27760 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
27770 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
27780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27790 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
277a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
277b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
277c0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
277d0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
277e0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
277f0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
27800 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27810 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
27820 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
27830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27840 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
27850 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
27860 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27870 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
27880 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
27890 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
278a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
278b0 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 28 70 56  module.xBegin(pV
278c0 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
278d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
278e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
278f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27920 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
27930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
27940 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
27950 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27960 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27970 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  NativeModule.xSy
27980 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nc" /> method...
27990 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
279a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
279b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
279c0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
279d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
279e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
279f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27a00 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
27a10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27a20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27a30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
27a40 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
27a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27a60 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27a70 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27a80 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f  eModule.xSync" /
27a90 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27aa0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
27ab0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
27ac0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
27ad0 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
27ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27af0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
27b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27b30 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27b40 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
27b50 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
27b60 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
27b70 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27b80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
27b90 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
27ba0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
27bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27bc0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
27bd0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
27be0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
27bf0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
27c00 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
27c10 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
27c20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
27c30 64 75 6c 65 2e 78 53 79 6e 63 28 70 56 74 61 62  dule.xSync(pVtab
27c40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
27c50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27c60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ca0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
27cb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
27cc0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27cd0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27ce0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27cf0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  iveModule.xCommi
27d00 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
27d10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27d20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
27d30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27d40 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
27d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27d60 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27d70 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27d80 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22  eModule.xCommit"
27d90 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27da0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
27db0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
27dc0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
27dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27de0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27df0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27e00 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
27e10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27e20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27e30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27e40 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
27e50 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
27e60 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20  mmit(..         
27e70 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
27e80 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
27e90 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
27ea0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27eb0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27ec0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
27ed0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
27ee0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
27ef0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
27f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f10 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
27f20 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
27f30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27f40 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
27f50 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
27f60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27f70 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
27f80 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
27f90 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
27fa0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
27fb0 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  rn module.xCommi
27fc0 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  t(pVtab);..     
27fd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
27fe0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
27ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
28030 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28040 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28050 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28060 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28070 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28080 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
28090 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
280a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
280b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
280c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
280d0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
280e0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
280f0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28100 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28110 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
28120 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28130 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28150 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
28160 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
28170 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
28180 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
28190 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f  ule.xRollback" /
281a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
281b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
281c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
281d0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
281e0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
281f0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
28200 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
28210 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
28220 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
28230 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28240 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
28250 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
28260 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
28270 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
28280 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
282a0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
282b0 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
282c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
282d0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
282e0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
282f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28300 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
28310 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
28320 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
28330 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
28340 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  n module.xRollba
28350 63 6b 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  ck(pVtab);..    
28360 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28370 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
28380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
283a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
283b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
283c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
283d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
283e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
283f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28400 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28410 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
28420 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28430 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
28440 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
28450 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28460 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
28470 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28480 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28490 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
284a0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
284b0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
284c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
284d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
284e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
284f0 6d 20 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a  m name="nArg">..
28500 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28510 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
28520 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
28530 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
28540 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
28550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28560 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28580 61 6d 20 6e 61 6d 65 3d 22 7a 4e 61 6d 65 22 3e  am name="zName">
28590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
285a0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
285b0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
285c0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
285d0 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f  nction" /> metho
285e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
285f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28600 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28610 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62  aram name="callb
28620 61 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ack">..         
28630 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
28640 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
28650 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
28660 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
28670 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28680 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
28690 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
286a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
286b0 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20  pClientData">.. 
286c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
286d0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
286e0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
286f0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
28700 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
28710 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28720 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
28730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
28740 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
28750 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28760 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28770 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
28780 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
28790 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
287a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
287b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
287c0 70 75 62 6c 69 63 20 69 6e 74 20 78 46 69 6e 64  public int xFind
287d0 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
287e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
287f0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
28800 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41            int nA
28810 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rg,..           
28820 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d       IntPtr zNam
28830 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
28840 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61      ref SQLiteCa
28850 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c  llback callback,
28860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28870 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 6c    ref IntPtr pCl
28880 69 65 6e 74 44 61 74 61 0d 0a 20 20 20 20 20 20  ientData..      
28890 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
288a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
288b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
288c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288d0 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
288e0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
288f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28900 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28910 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
28920 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
28930 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
28940 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
28950 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
28960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
28970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28980 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76       ModuleNotAv
28990 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
289a0 72 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  r(pVtab);..     
289b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
289c0 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20  eturn 0;..      
289d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
289e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
289f0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69  eturn module.xFi
28a00 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
28a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a20 20 70 56 74 61 62 2c 20 6e 41 72 67 2c 20 7a 4e   pVtab, nArg, zN
28a30 61 6d 65 2c 20 72 65 66 20 63 61 6c 6c 62 61 63  ame, ref callbac
28a40 6b 2c 20 72 65 66 20 70 43 6c 69 65 6e 74 44 61  k, ref pClientDa
28a50 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ta);..          
28a60 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
28a70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
28a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ab0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
28ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
28ad0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
28ae0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28af0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28b00 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
28b10 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ame" /> method..
28b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28b30 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
28b40 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
28b50 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
28b60 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28b70 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28b80 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28b90 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
28ba0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
28bb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28bc0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
28bd0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28be0 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20  name="zNew">..  
28bf0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28c00 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28c10 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28c20 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
28c30 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28c40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28c50 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
28c60 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
28c70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28c80 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28c90 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28ca0 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f  odule.xRename" /
28cb0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28cc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
28cd0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
28ce0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
28cf0 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d  ErrorCode xRenam
28d00 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
28d10 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
28d20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28d30 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
28d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
28d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28d70 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28d80 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
28d90 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
28da0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
28db0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28dc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
28dd0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
28de0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
28df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28e00 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
28e10 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
28e20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
28e30 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
28e40 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
28e50 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
28e60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
28e70 64 75 6c 65 2e 78 52 65 6e 61 6d 65 28 70 56 74  dule.xRename(pVt
28e80 61 62 2c 20 7a 4e 65 77 29 3b 0d 0a 20 20 20 20  ab, zNew);..    
28e90 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28ea0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
28eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28ef0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28f00 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
28f10 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28f20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28f30 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28f40 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e  e.xSavepoint" />
28f50 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28f60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
28f70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
28f80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28f90 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
28fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28fb0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28fc0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28fd0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
28fe0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29000 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
29010 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29020 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  ="iSavepoint">..
29030 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29040 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29050 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29060 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
29070 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
29080 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29090 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
290a0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
290b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
290c0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
290d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
290e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
290f0 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
29100 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29110 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
29120 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
29130 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
29140 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
29150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
29160 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
29170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
29180 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
291a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
291b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
291c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
291d0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
291e0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
291f0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
29200 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29210 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
29220 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
29230 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
29240 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
29250 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
29260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29270 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
29280 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
29290 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
292a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
292b0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
292c0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 28 70 56  le.xSavepoint(pV
292d0 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
292e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
292f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29340 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
29350 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
29360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29370 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29380 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29390 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
293a0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
293b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
293c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
293d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
293e0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
293f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29400 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29410 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29420 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
29430 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
29440 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29450 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29460 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29470 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22  ame="iSavepoint"
29480 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29490 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
294a0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
294b0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
294c0 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  se" /> method...
294d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
294e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
294f0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
29500 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
29510 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29520 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
29530 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
29540 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ease" /> method.
29550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29560 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
29570 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
29580 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29590 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20   xRelease(..    
295a0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
295b0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
295c0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
295d0 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20  Savepoint..     
295e0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
295f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29600 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
29610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29620 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
29630 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
29640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29650 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
29660 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
29670 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
29680 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
29690 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
296a0 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
296b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296c0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
296d0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
296e0 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
296f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29700 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
29710 78 52 65 6c 65 61 73 65 28 70 56 74 61 62 2c 20  xRelease(pVtab, 
29720 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20  iSavepoint);..  
29730 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
29740 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
29750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
29790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
297a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
297b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
297c0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
297d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
297e0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
297f0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29800 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
29810 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29820 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
29830 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
29840 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29850 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
29860 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
29870 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
29880 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  o" /> method... 
29890 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
298a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
298b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
298c0 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74  name="iSavepoint
298d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
298e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
298f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29900 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
29910 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f  backTo" /> metho
29920 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29930 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29940 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
29950 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
29960 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29970 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29980 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29990 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20  xRollbackTo" /> 
299a0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
299b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
299c0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
299d0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
299e0 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
299f0 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20  kTo(..          
29a00 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
29a10 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
29a20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
29a30 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
29a40 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
29a50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29a60 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
29a70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
29a80 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
29a90 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
29aa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
29ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ac0 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
29ad0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
29ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29af0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
29b00 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
29b10 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29b20 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
29b30 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
29b40 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
29b50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
29b60 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  rn module.xRollb
29b70 61 63 6b 54 6f 28 70 56 74 61 62 2c 20 69 53 61  ackTo(pVtab, iSa
29b80 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
29b90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
29ba0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
29bb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
29c10 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
29c20 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
29c30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29c40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
29c50 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
29c60 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
29c70 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
29c80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29c90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29ca0 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
29cb0 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
29cc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29cd0 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
29ce0 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
29cf0 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53              GC.S
29d00 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
29d10 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
29d20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
29d30 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
29d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29da0 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
29db0 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65  ble "Pattern" Me
29dc0 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20  mbers..         
29dd0 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
29de0 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20  disposed;..     
29df0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
29e00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
29e10 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20    /// Throws an 
29e20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63  <see cref="Objec
29e30 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
29e40 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69 73 20 6f  on" /> if this o
29e50 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 20  bject..         
29e60 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20     /// instance 
29e70 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
29e80 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29e90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
29ea0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
29eb0 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
29ec0 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
29ed0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
29ee0 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f    {..#if THROW_O
29ef0 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20  N_DISPOSED..    
29f00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29f10 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
29f20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f40 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
29f50 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
29f60 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
29f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
29f80 70 65 6f 66 28 53 51 4c 69 74 65 4e 61 74 69 76  peof(SQLiteNativ
29f90 65 4d 6f 64 75 6c 65 29 2e 4e 61 6d 65 29 3b 0d  eModule).Name);.
29fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29fb0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
29fc0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29fd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a020 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a030 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2a040 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
2a050 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
2a060 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2a070 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2a080 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a090 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2a0a0 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
2a0b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2a0c0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
2a0d0 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
2a0e0 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d  eing called from
2a0f0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
2a100 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
2a110 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d  "Dispose()" /> m
2a120 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20  ethod.  Zero if 
2a130 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
2a140 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  eing..          
2a150 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 66 72 6f    /// called fro
2a160 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e  m the finalizer.
2a170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a180 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2a190 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2a1a0 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72  /* protected vir
2a1b0 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73  tual */ void Dis
2a1c0 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
2a1d0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
2a1e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a1f0 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
2a200 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
2a210 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66              //if
2a230 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
2a240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a250 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20    //{..         
2a260 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2a270 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2a280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a290 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
2a2a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2a2b0 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61   // dispose mana
2a2c0 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
2a2d0 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
2a2e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2a2f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2a300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a310 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
2a320 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a             //}..
2a330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a340 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
2a370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a380 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
2a390 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
2a3a0 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
2a3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2a3f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2a400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a410 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
2a420 20 6d 6f 64 75 6c 65 20 69 73 20 6e 6f 74 20 6f   module is not o
2a430 77 6e 65 64 20 62 79 20 75 73 3b 20 74 68 65 72  wned by us; ther
2a440 65 66 6f 72 65 2c 20 64 6f 20 6e 6f 74 0d 0a 20  efore, do not.. 
2a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a460 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 73 70     //       disp
2a470 6f 73 65 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  ose it...       
2a480 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2a490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a4a0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2a4b0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4d0 20 20 6d 6f 64 75 6c 65 20 3d 20 6e 75 6c 6c 3b    module = null;
2a4e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a4f0 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64          disposed
2a500 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
2a510 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a520 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2a530 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2a540 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2a550 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a590 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2a5a0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73       #region Des
2a5b0 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20  tructor..       
2a5c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2a5d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a5e0 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
2a5f0 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2a600 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce...           
2a610 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2a620 0a 20 20 20 20 20 20 20 20 20 20 20 20 7e 53 51  .            ~SQ
2a630 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a640 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
2a650 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a660 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
2a670 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2a680 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
2a690 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20  endregion..     
2a6a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
2a6b0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2a6c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a710 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2a720 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
2a730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2a740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a750 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
2a760 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
2a770 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2a780 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2a790 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20  in use...       
2a7a0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2a7b0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2a7c0 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
2a7d0 20 69 6e 74 20 44 65 66 61 75 6c 74 4d 6f 64 75   int DefaultModu
2a7e0 6c 65 56 65 72 73 69 6f 6e 20 3d 20 32 3b 0d 0a  leVersion = 2;..
2a7f0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2a800 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a850 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2a860 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
2a870 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
2a880 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2a890 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
2a8a0 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
2a8b0 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65  store the native
2a8c0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2a8d0 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20  structure..     
2a8e0 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
2a8f0 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65  d with this obje
2a900 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2a910 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2a920 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
2a930 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69  ivate UnsafeNati
2a940 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2a950 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65 4d  3_module nativeM
2a960 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  odule;....      
2a970 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2a9c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2a9d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2a9e0 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73  This field is us
2a9f0 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20  ed to store the 
2aa00 64 65 73 74 72 75 63 74 6f 72 20 64 65 6c 65 67  destructor deleg
2aa10 61 74 65 20 74 6f 20 62 65 20 70 61 73 73 65 64  ate to be passed
2aa20 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
2aa30 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
2aa40 20 6c 69 62 72 61 72 79 20 76 69 61 20 74 68 65   library via the
2aa50 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
2aa60 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2aa70 65 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e()..        ///
2aa80 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
2aa90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2aaa0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
2aab0 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ate UnsafeNative
2aac0 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79  Methods.xDestroy
2aad0 4d 6f 64 75 6c 65 20 64 65 73 74 72 6f 79 4d 6f  Module destroyMo
2aae0 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dule;....       
2aaf0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2ab40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ab50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2ab60 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
2ab70 64 20 74 6f 20 73 74 6f 72 65 20 61 20 70 6f 69  d to store a poi
2ab80 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69  nter to the nati
2ab90 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
2aba0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
2abb0 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 65  tructure returne
2abc0 64 20 62 79 20 74 68 65 20 73 71 6c 69 74 65 33  d by the sqlite3
2abd0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2abe0 6c 65 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le_module..     
2abf0 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
2ac00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2ac10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ac20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
2ac30 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c   disposableModul
2ac40 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e;....        //
2ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac90 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
2aca0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2acb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2acc0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2acd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
2ace0 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f  field is used to
2acf0 20 68 6f 6c 64 20 74 68 65 20 62 6c 6f 63 6b 20   hold the block 
2ad00 6f 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  of native memory
2ad10 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0d 0a   that contains..
2ad20 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
2ad30 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2ad40 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2ad50 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2ad60 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
2ad70 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
2ad80 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
2ad90 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
2ada0 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
2adb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2adc0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2add0 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 70 4e  rivate IntPtr pN
2ade0 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 23 65  ativeModule;..#e
2adf0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ae50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2ae60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2ae70 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
2ae80 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69   to store the vi
2ae90 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 73 74  rtual table inst
2aea0 61 6e 63 65 73 20 61 73 73 6f 63 69 61 74 65 64  ances associated
2aeb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
2aec0 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20  th this module. 
2aed0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
2aee0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
2aef0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
2af00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
2af10 75 63 74 75 72 65 20 69 73 20 75 73 65 64 20 74  ucture is used t
2af20 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20  o key into this 
2af30 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  collection...   
2af40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2af50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2af60 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c  vate Dictionary<
2af70 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69  IntPtr, SQLiteVi
2af80 72 74 75 61 6c 54 61 62 6c 65 3e 20 74 61 62 6c  rtualTable> tabl
2af90 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  es;....        /
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afe0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2aff0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2b000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
2b010 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20  s field is used 
2b020 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72  to store the vir
2b030 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
2b040 72 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20  r instances..   
2b050 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
2b060 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f  ted with this mo
2b070 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76  dule.  The nativ
2b080 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
2b090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
2b0a0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
2b0b0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
2b0c0 75 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 6b  ure is used to k
2b0d0 65 79 20 69 6e 74 6f 20 74 68 69 73 0d 0a 20 20  ey into this..  
2b0e0 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 6c 65 63        /// collec
2b0f0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2b100 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2b110 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44         private D
2b120 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72  ictionary<IntPtr
2b130 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  , SQLiteVirtualT
2b140 61 62 6c 65 43 75 72 73 6f 72 3e 20 63 75 72 73  ableCursor> curs
2b150 6f 72 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ors;....        
2b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b1b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2b1c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2b1d0 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
2b1e0 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69   to store the vi
2b1f0 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e 63  rtual table func
2b200 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 73 0d 0a  tion instances..
2b210 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
2b220 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
2b230 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 63 61   module.  The ca
2b240 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 66  se-insensitive f
2b250 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 0d 0a 20 20  unction name..  
2b260 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68        /// and th
2b270 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  e number of argu
2b280 6d 65 6e 74 73 20 28 77 69 74 68 20 2d 31 20 6d  ments (with -1 m
2b290 65 61 6e 69 6e 67 20 22 61 6e 79 22 29 20 61 72  eaning "any") ar
2b2a0 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20  e used to..     
2b2b0 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 75 63 74     /// construct
2b2c0 20 74 68 65 20 73 74 72 69 6e 67 20 74 68 61 74   the string that
2b2d0 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20   is used to key 
2b2e0 69 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63  into this collec
2b2f0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2b300 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2b310 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44         private D
2b320 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
2b330 2c 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  , SQLiteFunction
2b340 3e 20 66 75 6e 63 74 69 6f 6e 73 3b 0d 0a 20 20  > functions;..  
2b350 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2b360 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2b3c0 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f  region Public Co
2b3d0 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
2b3e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2b3f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
2b400 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
2b410 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
2b420 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
2b430 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2b440 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2b450 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
2b460 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2b470 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c  ame of the modul
2b480 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74  e.  This paramet
2b490 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c  er cannot be nul
2b4a0 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  l...        /// 
2b4b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2b4c0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4d    public SQLiteM
2b4d0 6f 64 75 6c 65 28 73 74 72 69 6e 67 20 6e 61 6d  odule(string nam
2b4e0 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
2b4f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
2b500 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
2b510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2b520 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
2b530 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 6e  NullException("n
2b540 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ame");....      
2b550 20 20 20 20 20 20 74 68 69 73 2e 6e 61 6d 65 20        this.name 
2b560 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  = name;..       
2b570 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65 73       this.tables
2b580 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72   = new Dictionar
2b590 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2b5a0 56 69 72 74 75 61 6c 54 61 62 6c 65 3e 28 29 3b  VirtualTable>();
2b5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2b5c0 69 73 2e 63 75 72 73 6f 72 73 20 3d 20 6e 65 77  is.cursors = new
2b5d0 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50   Dictionary<IntP
2b5e0 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61  tr, SQLiteVirtua
2b5f0 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e 28 29 3b  lTableCursor>();
2b600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2b610 69 73 2e 66 75 6e 63 74 69 6f 6e 73 20 3d 20 6e  is.functions = n
2b620 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
2b630 72 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e 63  ring, SQLiteFunc
2b640 74 69 6f 6e 3e 28 29 3b 0d 0a 20 20 20 20 20 20  tion>();..      
2b650 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2b660 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2b670 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b6c0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
2b6d0 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a  ternal Methods..
2b6e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b6f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2b700 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74  // Calls the nat
2b710 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ive SQLite core 
2b720 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72  library in order
2b730 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77   to create a new
2b740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69  ..        /// di
2b750 73 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 20  sposable module 
2b760 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69  containing the i
2b770 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
2b780 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
2b790 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2b7a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2b7b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2b7c0 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20  me="pDb">..     
2b7d0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2b7e0 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
2b7f0 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 74 6f  ction pointer to
2b800 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
2b810 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2b820 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2b830 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2b840 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
2b850 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
2b860 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2b870 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2b880 20 62 6f 6f 6c 20 43 72 65 61 74 65 44 69 73 70   bool CreateDisp
2b890 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 28 0d 0a 20  osableModule(.. 
2b8a0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2b8b0 72 20 70 44 62 0d 0a 20 20 20 20 20 20 20 20 20  r pDb..         
2b8c0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
2b8d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2b8e0 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c  (disposableModul
2b8f0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2b900 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b910 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2b920 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ...            I
2b930 6e 74 50 74 72 20 70 4e 61 6d 65 20 3d 20 49 6e  ntPtr pName = In
2b940 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
2b950 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2b960 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2b970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e                pN
2b980 61 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ame = SQLiteStri
2b990 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
2b9a0 6d 53 74 72 69 6e 67 28 6e 61 6d 65 29 3b 0d 0a  mString(name);..
2b9b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b9c0 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2b9d0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2b9e0 64 75 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c  dule nativeModul
2b9f0 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
2ba00 20 20 20 20 20 20 20 20 20 41 6c 6c 6f 63 61 74           Allocat
2ba10 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29 3b  eNativeModule();
2ba20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ba30 20 20 20 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c      destroyModul
2ba40 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2ba50 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73  tiveMethods.xDes
2ba60 74 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  troyModule(..   
2ba70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba80 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29   xDestroyModule)
2ba90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
2baa0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2bab0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2bac0 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d       disposableM
2bad0 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  odule =..       
2bae0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
2baf0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2bb00 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  .sqlite3_create_
2bb10 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2bb20 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2bb30 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c              pDb,
2bb40 20 70 4e 61 6d 65 2c 20 72 65 66 20 6e 61 74 69   pName, ref nati
2bb50 76 65 4d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72  veModule, IntPtr
2bb60 2e 5a 65 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f  .Zero, destroyMo
2bb70 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  dule);....      
2bb80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2bb90 20 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75   (disposableModu
2bba0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2bbb0 6f 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  o);..#elif !SQLI
2bbc0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
2bbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
2bbe0 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d  posableModule =.
2bbf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bc00 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
2bc10 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2bc20 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2bc30 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f  le_module_intero
2bc40 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p(..            
2bc50 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
2bc60 70 4e 61 6d 65 2c 20 41 6c 6c 6f 63 61 74 65 4e  pName, AllocateN
2bc70 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72  ativeModuleInter
2bc80 6f 70 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  op(),..         
2bc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2bca0 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72 73  tiveModule.iVers
2bcb0 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  ion, nativeModul
2bcc0 65 2e 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20  e.xCreate,..    
2bcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bce0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2bcf0 78 43 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65  xConnect, native
2bd00 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
2bd10 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
2bd20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2bd30 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
2bd40 65 63 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  ect, nativeModul
2bd50 65 2e 78 44 65 73 74 72 6f 79 2c 0d 0a 20 20 20  e.xDestroy,..   
2bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd70 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2bd80 2e 78 4f 70 65 6e 2c 20 6e 61 74 69 76 65 4d 6f  .xOpen, nativeMo
2bd90 64 75 6c 65 2e 78 43 6c 6f 73 65 2c 0d 0a 20 20  dule.xClose,..  
2bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bdb0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2bdc0 65 2e 78 46 69 6c 74 65 72 2c 20 6e 61 74 69 76  e.xFilter, nativ
2bdd0 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 2c 0d 0a  eModule.xNext,..
2bde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bdf0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2be00 75 6c 65 2e 78 45 6f 66 2c 20 6e 61 74 69 76 65  ule.xEof, native
2be10 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 2c 0d  Module.xColumn,.
2be20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2be30 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2be40 64 75 6c 65 2e 78 52 6f 77 49 64 2c 20 6e 61 74  dule.xRowId, nat
2be50 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
2be60 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2be70 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2be80 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 2c 20  eModule.xBegin, 
2be90 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  nativeModule.xSy
2bea0 6e 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nc,..           
2beb0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2bec0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
2bed0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2bee0 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Rollback,..     
2bef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf00 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2bf10 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 6e 61  FindFunction, na
2bf20 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
2bf30 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
2bf40 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2bf50 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  veModule.xSavepo
2bf60 69 6e 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  int, nativeModul
2bf70 65 2e 78 52 65 6c 65 61 73 65 2c 0d 0a 20 20 20  e.xRelease,..   
2bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf90 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2bfa0 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e  .xRollbackTo, In
2bfb0 74 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74 72  tPtr.Zero, destr
2bfc0 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20  oyModule);....  
2bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2bfe0 74 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c 65  turn (disposable
2bff0 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72  Module != IntPtr
2c000 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c 73 65 0d 0a  .Zero);..#else..
2c010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c020 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70  throw new NotImp
2c030 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f  lementedExceptio
2c040 6e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  n();..#endif..  
2c050 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2c060 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
2c070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2c080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c090 20 69 66 20 28 70 4e 61 6d 65 20 21 3d 20 49 6e   if (pName != In
2c0a0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2c0b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0d0 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
2c0e0 46 72 65 65 28 70 4e 61 6d 65 29 3b 0d 0a 20 20  Free(pName);..  
2c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c100 20 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72    pName = IntPtr
2c110 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
2c120 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c130 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2c140 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2c150 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2c160 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c1b0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
2c1c0 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
2c1d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2c1e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2c1f0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
2c200 20 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20 53   called by the S
2c210 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
2c220 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
2c230 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
2c240 6d 6f 64 75 6c 65 20 61 73 73 6f 63 69 61 74 65  module associate
2c250 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65  d with this obje
2c260 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 62  ct instance is b
2c270 65 69 6e 67 20 64 65 73 74 72 6f 79 65 64 20 64  eing destroyed d
2c280 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
2c290 74 6f 20 69 74 73 20 70 61 72 65 6e 74 20 63 6f  to its parent co
2c2a0 6e 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20 63  nnection being c
2c2b0 6c 6f 73 65 64 2e 20 20 49 74 20 6d 61 79 20 61  losed.  It may a
2c2c0 6c 73 6f 20 62 65 20 63 61 6c 6c 65 64 20 62 79  lso be called by
2c2d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
2c2e0 65 20 22 76 74 73 68 69 6d 22 20 6d 6f 64 75 6c  e "vtshim" modul
2c2f0 65 20 69 66 2f 77 68 65 6e 20 74 68 65 20 73 71  e if/when the sq
2c300 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
2c310 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 0d  dule() function.
2c320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  .        /// is 
2c330 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20  called...       
2c340 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2c350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2c360 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e  ram name="pClien
2c370 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  tData">..       
2c380 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
2c390 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
2c3a0 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
2c3b0 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61  h this module, a
2c3c0 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20  s it was..      
2c3d0 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74    /// provided t
2c3e0 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  o the SQLite cor
2c3f0 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74  e library when t
2c400 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
2c410 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
2c420 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74     /// was creat
2c430 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
2c440 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2c450 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
2c460 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 0d  xDestroyModule(.
2c470 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2c480 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 20  Ptr pClientData 
2c490 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
2c4a0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2c4b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c4c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2c4d0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
2c4e0 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 6a 75  t this point, ju
2c4f0 73 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61  st make sure tha
2c500 74 20 74 68 69 73 20 6e 61 74 69 76 65 20 6d 6f  t this native mo
2c510 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  dule..          
2c520 20 20 2f 2f 20 20 20 20 20 20 20 68 61 6e 64 6c    //       handl
2c530 65 20 69 73 20 6e 6f 74 20 72 65 75 73 65 64 2c  e is not reused,
2c540 20 6e 6f 72 20 70 61 73 73 65 64 20 69 6e 74 6f   nor passed into
2c550 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
2c560 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2c570 20 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73    sqlite3_dispos
2c580 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74  e_module() funct
2c590 69 6f 6e 20 6c 61 74 65 72 20 28 69 2e 65 2e 20  ion later (i.e. 
2c5a0 69 66 2f 77 68 65 6e 0d 0a 20 20 20 20 20 20 20  if/when..       
2c5b0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
2c5c0 65 20 44 69 73 70 6f 73 65 28 29 20 6d 65 74 68  e Dispose() meth
2c5d0 6f 64 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  od of this objec
2c5e0 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 63 61  t instance is ca
2c5f0 6c 6c 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  lled)...        
2c600 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2c610 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f      disposableMo
2c620 64 75 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  dule = IntPtr.Ze
2c630 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
2c640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c690 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2c6a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2c6b0 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
2c6c0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
2c6d0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2c6e0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2c6f0 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
2c700 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64    /// configured
2c710 20 28 6f 72 20 64 65 66 61 75 6c 74 29 20 3c 73   (or default) <s
2c720 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c730 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
2c740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
2c750 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
2c760 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
2c770 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2c780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
2c790 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2c7a0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73  /// The native s
2c7b0 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
2c7c0 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
2c7d0 20 63 6f 6e 66 69 67 75 72 65 64 20 28 6f 72 0d   configured (or.
2c7e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 66  .        /// def
2c7f0 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d  ault) <see cref=
2c800 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c810 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
2c820 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
2c830 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
2c840 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
2c850 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2c860 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e   private UnsafeN
2c870 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2c880 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f  ite3_module Allo
2c890 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  cateNativeModule
2c8a0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2c8b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2c8c0 6e 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65  n AllocateNative
2c8d0 4d 6f 64 75 6c 65 28 47 65 74 4e 61 74 69 76 65  Module(GetNative
2c8e0 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b 0d 0a  ModuleImpl());..
2c8f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2c900 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2c950 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2c960 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2c970 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2c980 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2c990 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65  / Creates and re
2c9a0 74 75 72 6e 73 20 61 20 6d 65 6d 6f 72 79 20 62  turns a memory b
2c9b0 6c 6f 63 6b 20 6f 62 74 61 69 6e 65 64 20 66 72  lock obtained fr
2c9c0 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
2c9d0 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
2c9e0 6c 69 62 72 61 72 79 20 75 73 65 64 20 74 6f 20  library used to 
2c9f0 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65  store the native
2ca00 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2ca10 73 74 72 75 63 74 75 72 65 20 66 6f 72 20 74 68  structure for th
2ca20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
2ca30 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
2ca40 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  when running on 
2ca50 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
2ca60 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20   Framework...   
2ca70 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2ca80 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2ca90 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2caa0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2cab0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
2cac0 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2cad0 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2cae0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2caf0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2cb00 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50      private IntP
2cb10 74 72 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76  tr AllocateNativ
2cb20 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70 28 29  eModuleInterop()
2cb30 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2cb40 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61           if (pNa
2cb50 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e  tiveModule == In
2cb60 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2cb70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cb80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2cba0 2f 20 48 41 43 4b 3a 20 4e 6f 20 65 61 73 79 20  / HACK: No easy 
2cbb0 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  way to determine
2cbc0 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
2cbd0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
2cbe0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2cbf0 20 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20    sqlite_module 
2cc00 73 74 72 75 63 74 75 72 65 20 77 68 65 6e 20 72  structure when r
2cc10 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e  unning on the .N
2cc20 45 54 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ET..            
2cc30 20 20 20 20 2f 2f 20 20 20 20 20 20 20 43 6f 6d      //       Com
2cc40 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 3b 20  pact Framework; 
2cc50 74 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74 20  therefore, just 
2cc60 62 61 73 65 20 74 68 65 20 73 69 7a 65 0d 0a 20  base the size.. 
2cc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2cc80 2f 20 20 20 20 20 20 20 6f 6e 20 77 68 61 74 20  /       on what 
2cc90 77 65 20 6b 6e 6f 77 3a 0d 0a 20 20 20 20 20 20  we know:..      
2cca0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2ccb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2ccc0 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20         There is 
2ccd0 6f 6e 65 20 69 6e 74 65 67 65 72 20 6d 65 6d 62  one integer memb
2cce0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
2ccf0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54 68       //       Th
2cd00 65 72 65 20 61 72 65 20 32 32 20 66 75 6e 63 74  ere are 22 funct
2cd10 69 6f 6e 20 70 6f 69 6e 74 65 72 20 6d 65 6d 62  ion pointer memb
2cd20 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ers...          
2cd30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2cd40 20 20 20 20 20 20 20 20 20 20 70 4e 61 74 69 76            pNativ
2cd50 65 4d 6f 64 75 6c 65 20 3d 20 53 51 4c 69 74 65  eModule = SQLite
2cd60 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28  Memory.Allocate(
2cd70 32 33 20 2a 20 49 6e 74 50 74 72 2e 53 69 7a 65  23 * IntPtr.Size
2cd80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2cd90 20 20 20 20 20 20 69 66 20 28 70 4e 61 74 69 76        if (pNativ
2cda0 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74  eModule == IntPt
2cdb0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2cdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
2cdd0 6f 77 20 6e 65 77 20 4f 75 74 4f 66 4d 65 6d 6f  ow new OutOfMemo
2cde0 72 79 45 78 63 65 70 74 69 6f 6e 28 22 73 71 6c  ryException("sql
2cdf0 69 74 65 33 5f 6d 6f 64 75 6c 65 22 29 3b 0d 0a  ite3_module");..
2ce00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2ce10 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2ce20 75 72 6e 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c  urn pNativeModul
2ce30 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  e;..        }..#
2ce40 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2ce50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2cea0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ceb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
2cec0 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72  reates and retur
2ced0 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  ns the native sq
2cee0 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75  lite_module stru
2cef0 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d  cture using the.
2cf00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  .        /// spe
2cf10 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
2cf20 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2cf30 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
2cf40 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ace..        ///
2cf50 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2cf60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2cf70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2cf80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2cf90 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
2cfa0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
2cfb0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2cfc0 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  ativeModule" /> 
2cfd0 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d  interface implem
2cfe0 65 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20  entation to..   
2cff0 20 20 20 20 20 2f 2f 2f 20 75 73 65 2e 0d 0a 20       /// use... 
2d000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2d010 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2d020 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2d030 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2d040 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
2d050 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
2d060 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
2d070 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
2d080 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d090 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
2d0a0 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
2d0b0 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2d0c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2d0d0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2d0e0 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e UnsafeNativeMe
2d0f0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2d100 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74  dule AllocateNat
2d110 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  iveModule(..    
2d120 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
2d130 61 74 69 76 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  ativeModule modu
2d140 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
2d150 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2d160 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d170 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73  Module = new Uns
2d180 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2d190 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28  .sqlite3_module(
2d1a0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d1b0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65  nativeModule.iVe
2d1c0 72 73 69 6f 6e 20 3d 20 44 65 66 61 75 6c 74 4d  rsion = DefaultM
2d1d0 6f 64 75 6c 65 56 65 72 73 69 6f 6e 3b 0d 0a 0d  oduleVersion;...
2d1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2d1f0 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29  (module != null)
2d200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d220 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2d230 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  reate = new Unsa
2d240 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2d250 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
2d260 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2d270 75 6c 65 2e 78 43 72 65 61 74 65 29 3b 0d 0a 0d  ule.xCreate);...
2d280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d290 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2d2a0 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
2d2b0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2d2c0 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  .xConnect(..    
2d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2e0 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 29  module.xConnect)
2d2f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d300 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d310 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e  e.xBestIndex = n
2d320 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d330 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65  ethods.xBestInde
2d340 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
2d350 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2d360 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20  BestIndex);.... 
2d370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2d380 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
2d390 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e  connect = new Un
2d3a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d3b0 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  s.xDisconnect(..
2d3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3d0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63      module.xDisc
2d3e0 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20  onnect);....    
2d3f0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2d400 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  veModule.xDestro
2d410 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  y = new UnsafeNa
2d420 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73  tiveMethods.xDes
2d430 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20  troy(..         
2d440 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2d450 65 2e 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a  e.xDestroy);....
2d460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d470 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  nativeModule.xOp
2d480 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  en = new UnsafeN
2d490 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70  ativeMethods.xOp
2d4a0 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
2d4b0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2d4c0 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  xOpen);....     
2d4d0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2d4e0 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d  eModule.xClose =
2d4f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2d500 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28  eMethods.xClose(
2d510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d520 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6c        module.xCl
2d530 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ose);....       
2d540 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d550 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20  odule.xFilter = 
2d560 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2d570 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28  Methods.xFilter(
2d580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d590 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69        module.xFi
2d5a0 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lter);....      
2d5b0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d5c0 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e  Module.xNext = n
2d5d0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d5e0 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20  ethods.xNext(.. 
2d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d600 20 20 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 29     module.xNext)
2d610 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d620 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d630 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73  e.xEof = new Uns
2d640 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2d650 2e 78 45 6f 66 28 6d 6f 64 75 6c 65 2e 78 45 6f  .xEof(module.xEo
2d660 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  f);....         
2d670 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2d680 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65  ule.xColumn = ne
2d690 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d6a0 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a  thods.xColumn(..
2d6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6c0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75      module.xColu
2d6d0 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mn);....        
2d6e0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2d6f0 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65  dule.xRowId = ne
2d700 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d710 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20  thods.xRowId(.. 
2d720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d730 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64     module.xRowId
2d740 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2d750 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2d760 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77  le.xUpdate = new
2d770 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2d780 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20  hods.xUpdate(.. 
2d790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d7a0 20 20 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74     module.xUpdat
2d7b0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2d7c0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2d7d0 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77  ule.xBegin = new
2d7e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2d7f0 68 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20  hods.xBegin(..  
2d800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d810 20 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 29    module.xBegin)
2d820 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d830 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d840 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e  e.xSync = new Un
2d850 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d860 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  s.xSync(..      
2d870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2d880 64 75 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a 0d 0a  dule.xSync);....
2d890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d8a0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2d8b0 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  mmit = new Unsaf
2d8c0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2d8d0 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
2d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2d8f0 75 6c 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d  ule.xCommit);...
2d900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d910 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2d920 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e  ollback = new Un
2d930 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d940 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  s.xRollback(..  
2d950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d960 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61    module.xRollba
2d970 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ck);....        
2d980 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2d990 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2d9a0 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  on = new UnsafeN
2d9b0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
2d9c0 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
2d9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d9e0 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e   module.xFindFun
2d9f0 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  ction);....     
2da00 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2da10 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20  eModule.xRename 
2da20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2da30 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d  veMethods.xRenam
2da40 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2da50 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2da60 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  Rename);....    
2da70 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2da80 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  veModule.xSavepo
2da90 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  int = new Unsafe
2daa0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53  NativeMethods.xS
2dab0 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
2dac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2dad0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2dae0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2daf0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2db00 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65  le.xRelease = ne
2db10 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2db20 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d  thods.xRelease(.
2db30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2db40 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65 6c       module.xRel
2db50 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
2db60 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2db70 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2db80 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  To = new UnsafeN
2db90 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2dba0 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
2dbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2dbc0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2dbd0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2dbe0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2dbf0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2dc00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2dc10 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2dc20 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20  e.xCreate = new 
2dc30 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2dc40 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ods.xCreate(..  
2dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc60 20 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20    xCreate);.... 
2dc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2dc80 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
2dc90 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  nect = new Unsaf
2dca0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2dcb0 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
2dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43                xC
2dcd0 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20  onnect);....    
2dce0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2dcf0 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
2dd00 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  dex = new Unsafe
2dd10 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42  NativeMethods.xB
2dd20 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20  estIndex(..     
2dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2dd40 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20  BestIndex);.... 
2dd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2dd60 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
2dd70 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e  connect = new Un
2dd80 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2dd90 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  s.xDisconnect(..
2dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddb0 20 20 20 20 78 44 69 73 63 6f 6e 6e 65 63 74 29      xDisconnect)
2ddc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ddd0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2dde0 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77  e.xDestroy = new
2ddf0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2de00 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a  hods.xDestroy(..
2de10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de20 20 20 20 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a      xDestroy);..
2de30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2de40 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2de50 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  Open = new Unsaf
2de60 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2de70 4f 70 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a 20 20  Open(xOpen);..  
2de80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2de90 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73  tiveModule.xClos
2dea0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2deb0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f  tiveMethods.xClo
2dec0 73 65 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20  se(xClose);.... 
2ded0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2dee0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
2def0 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ter = new Unsafe
2df00 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46  NativeMethods.xF
2df10 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
2df20 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6c              xFil
2df30 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
2df40 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2df50 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65  odule.xNext = ne
2df60 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2df70 74 68 6f 64 73 2e 78 4e 65 78 74 28 78 4e 65 78  thods.xNext(xNex
2df80 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
2df90 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2dfa0 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73  e.xEof = new Uns
2dfb0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2dfc0 2e 78 45 6f 66 28 78 45 6f 66 29 3b 0d 0a 0d 0a  .xEof(xEof);....
2dfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dfe0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2dff0 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  lumn = new Unsaf
2e000 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2e010 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
2e020 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f               xCo
2e030 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lumn);....      
2e040 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e050 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20  Module.xRowId = 
2e060 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2e070 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 78  Methods.xRowId(x
2e080 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  RowId);....     
2e090 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e0a0 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  eModule.xUpdate 
2e0b0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e0c0 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74  veMethods.xUpdat
2e0d0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2e0e0 20 20 20 20 20 20 20 20 78 55 70 64 61 74 65 29          xUpdate)
2e0f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e100 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e110 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55  e.xBegin = new U
2e120 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e130 64 73 2e 78 42 65 67 69 6e 28 78 42 65 67 69 6e  ds.xBegin(xBegin
2e140 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2e150 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e160 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73  .xSync = new Uns
2e170 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e180 2e 78 53 79 6e 63 28 78 53 79 6e 63 29 3b 0d 0a  .xSync(xSync);..
2e190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e1a0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e1b0 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73  Commit = new Uns
2e1c0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e1d0 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  .xCommit(..     
2e1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2e1f0 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20  Commit);....    
2e200 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2e210 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2e220 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ck = new UnsafeN
2e230 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2e240 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
2e250 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f               xRo
2e260 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20  llback);....    
2e270 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2e280 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
2e290 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
2e2a0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e2b0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
2e2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e2d0 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69       xFindFuncti
2e2e0 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  on);....        
2e2f0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e300 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e  dule.xRename = n
2e310 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e320 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d  ethods.xRename(.
2e330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e340 20 20 20 20 20 78 52 65 6e 61 6d 65 29 3b 0d 0a       xRename);..
2e350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e360 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e370 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20  Savepoint = new 
2e380 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e390 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d  ods.xSavepoint(.
2e3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e3b0 20 20 20 20 20 78 53 61 76 65 70 6f 69 6e 74 29       xSavepoint)
2e3c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e3d0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e3e0 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77  e.xRelease = new
2e3f0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e400 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a  hods.xRelease(..
2e410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e420 20 20 20 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a      xRelease);..
2e430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e440 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e450 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
2e460 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e470 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
2e480 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e490 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b         xRollback
2e4a0 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  To);..          
2e4b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2e4c0 20 20 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65     return native
2e4d0 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
2e4e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2e4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e530 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2e540 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2e550 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61          /// Crea
2e560 74 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68  tes a copy of th
2e570 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
2e580 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
2e590 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
2e5a0 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
2e5b0 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  module" /> objec
2e5c0 74 20 69 6e 73 74 61 6e 63 65 2c 0d 0a 20 20 20  t instance,..   
2e5d0 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 64       /// using d
2e5e0 65 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74  efault implement
2e5f0 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 63  ations for the c
2e600 6f 6e 74 61 69 6e 65 64 20 64 65 6c 65 67 61 74  ontained delegat
2e610 65 73 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20  es when..       
2e620 20 2f 2f 2f 20 6e 65 63 65 73 73 61 72 79 2e 0d   /// necessary..
2e630 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2e640 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2e650 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2e660 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
2e670 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2e680 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
2e690 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2e6a0 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  e3_module" /> ob
2e6b0 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
2e6c0 2f 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 63 6f  / instance to co
2e6d0 70 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  py...        ///
2e6e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e6f0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2e700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2e710 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  e new <see cref=
2e720 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  "UnsafeNativeMet
2e730 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2e740 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a  ule" /> object..
2e750 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
2e760 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
2e770 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2e780 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55         private U
2e790 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e7a0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2e7b0 65 20 43 6f 70 79 4e 61 74 69 76 65 4d 6f 64 75  e CopyNativeModu
2e7c0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2e7d0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e7e0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2e7f0 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
2e800 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2e810 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e820 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2e830 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2e840 64 75 6c 65 20 6e 65 77 4d 6f 64 75 6c 65 20 3d  dule newModule =
2e850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e860 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69    new UnsafeNati
2e870 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2e880 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20  3_module();.... 
2e890 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2e8a0 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20  dule.iVersion = 
2e8b0 6d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 3b  module.iVersion;
2e8c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e8d0 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  newModule.xCreat
2e8e0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2e8f0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65  tiveMethods.xCre
2e900 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
2e910 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43        (module.xC
2e920 72 65 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f  reate != null) ?
2e930 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20   module.xCreate 
2e940 3a 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20  : xCreate);.... 
2e950 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2e960 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20  dule.xConnect = 
2e970 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2e980 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74  Methods.xConnect
2e990 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e9a0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e     (module.xConn
2e9b0 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ect != null) ? m
2e9c0 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3a  odule.xConnect :
2e9d0 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20   xConnect);.... 
2e9e0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2e9f0 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20  dule.xBestIndex 
2ea00 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ea10 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49  veMethods.xBestI
2ea20 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
2ea30 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2ea40 42 65 73 74 49 6e 64 65 78 20 21 3d 20 6e 75 6c  BestIndex != nul
2ea50 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 73  l) ? module.xBes
2ea60 74 49 6e 64 65 78 20 3a 20 78 42 65 73 74 49 6e  tIndex : xBestIn
2ea70 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dex);....       
2ea80 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2ea90 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77  Disconnect = new
2eaa0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2eab0 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74  hods.xDisconnect
2eac0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ead0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 69 73 63     (module.xDisc
2eae0 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20  onnect != null) 
2eaf0 3f 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  ? module.xDiscon
2eb00 6e 65 63 74 20 3a 0d 0a 20 20 20 20 20 20 20 20  nect :..        
2eb10 20 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e          xDisconn
2eb20 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ect);....       
2eb30 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2eb40 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e  Destroy = new Un
2eb50 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2eb60 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  s.xDestroy(..   
2eb70 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2eb80 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 21 3d  dule.xDestroy !=
2eb90 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2eba0 78 44 65 73 74 72 6f 79 20 3a 20 78 44 65 73 74  xDestroy : xDest
2ebb0 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  roy);....       
2ebc0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2ebd0 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  Open = new Unsaf
2ebe0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2ebf0 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  Open(..         
2ec00 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2ec10 4f 70 65 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  Open != null) ? 
2ec20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3a 20 78  module.xOpen : x
2ec30 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Open);....      
2ec40 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2ec50 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
2ec60 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ec70 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  .xClose(..      
2ec80 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2ec90 65 2e 78 43 6c 6f 73 65 20 21 3d 20 6e 75 6c 6c  e.xClose != null
2eca0 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73  ) ? module.xClos
2ecb0 65 20 3a 20 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a  e : xClose);....
2ecc0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2ecd0 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20  odule.xFilter = 
2ece0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2ecf0 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28  Methods.xFilter(
2ed00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ed10 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65    (module.xFilte
2ed20 72 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  r != null) ? mod
2ed30 75 6c 65 2e 78 46 69 6c 74 65 72 20 3a 20 78 46  ule.xFilter : xF
2ed40 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ilter);....     
2ed50 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2ed60 2e 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73  .xNext = new Uns
2ed70 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ed80 2e 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20  .xNext(..       
2ed90 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2eda0 2e 78 4e 65 78 74 20 21 3d 20 6e 75 6c 6c 29 20  .xNext != null) 
2edb0 3f 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3a  ? module.xNext :
2edc0 20 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20   xNext);....    
2edd0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2ede0 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73  e.xEof = new Uns
2edf0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ee00 2e 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  .xEof(..        
2ee10 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2ee20 78 45 6f 66 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  xEof != null) ? 
2ee30 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 3a 20 78 45  module.xEof : xE
2ee40 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
2ee50 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43      newModule.xC
2ee60 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61  olumn = new Unsa
2ee70 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ee80 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20  xColumn(..      
2ee90 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2eea0 65 2e 78 43 6f 6c 75 6d 6e 20 21 3d 20 6e 75 6c  e.xColumn != nul
2eeb0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c  l) ? module.xCol
2eec0 75 6d 6e 20 3a 20 78 43 6f 6c 75 6d 6e 29 3b 0d  umn : xColumn);.
2eed0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2eee0 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20  ewModule.xRowId 
2eef0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ef00 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64  veMethods.xRowId
2ef10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ef20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 77 49     (module.xRowI
2ef30 64 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  d != null) ? mod
2ef40 75 6c 65 2e 78 52 6f 77 49 64 20 3a 20 78 52 6f  ule.xRowId : xRo
2ef50 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  wId);....       
2ef60 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2ef70 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73  Update = new Uns
2ef80 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ef90 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20  .xUpdate(..     
2efa0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2efb0 6c 65 2e 78 55 70 64 61 74 65 20 21 3d 20 6e 75  le.xUpdate != nu
2efc0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 55 70  ll) ? module.xUp
2efd0 64 61 74 65 20 3a 20 78 55 70 64 61 74 65 29 3b  date : xUpdate);
2efe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2eff0 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  newModule.xBegin
2f000 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2f010 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69  iveMethods.xBegi
2f020 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2f030 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42 65 67      (module.xBeg
2f040 69 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  in != null) ? mo
2f050 64 75 6c 65 2e 78 42 65 67 69 6e 20 3a 20 78 42  dule.xBegin : xB
2f060 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  egin);....      
2f070 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f080 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61  xSync = new Unsa
2f090 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f0a0 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20  xSync(..        
2f0b0 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2f0c0 78 53 79 6e 63 20 21 3d 20 6e 75 6c 6c 29 20 3f  xSync != null) ?
2f0d0 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3a 20   module.xSync : 
2f0e0 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20  xSync);....     
2f0f0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2f100 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55  .xCommit = new U
2f110 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f120 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  ds.xCommit(..   
2f130 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2f140 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 21 3d 20  dule.xCommit != 
2f150 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f160 43 6f 6d 6d 69 74 20 3a 20 78 43 6f 6d 6d 69 74  Commit : xCommit
2f170 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f180 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c    newModule.xRol
2f190 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61  lback = new Unsa
2f1a0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f1b0 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
2f1c0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2f1d0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 21 3d  ule.xRollback !=
2f1e0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2f1f0 78 52 6f 6c 6c 62 61 63 6b 20 3a 20 78 52 6f 6c  xRollback : xRol
2f200 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20  lback);....     
2f210 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2f220 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d  .xFindFunction =
2f230 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f240 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75  eMethods.xFindFu
2f250 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
2f260 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2f270 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 21  .xFindFunction !
2f280 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2f290 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3a  .xFindFunction :
2f2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f2b0 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29    xFindFunction)
2f2c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f2d0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6e 61   newModule.xRena
2f2e0 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  me = new UnsafeN
2f2f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65  ativeMethods.xRe
2f300 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  name(..         
2f310 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2f320 52 65 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 20  Rename != null) 
2f330 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  ? module.xRename
2f340 20 3a 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a   : xRename);....
2f350 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f360 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2f370 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2f380 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65  iveMethods.xSave
2f390 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
2f3a0 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2f3b0 78 53 61 76 65 70 6f 69 6e 74 20 21 3d 20 6e 75  xSavepoint != nu
2f3c0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 61  ll) ? module.xSa
2f3d0 76 65 70 6f 69 6e 74 20 3a 20 78 53 61 76 65 70  vepoint : xSavep
2f3e0 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  oint);....      
2f3f0 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f400 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55  xRelease = new U
2f410 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f420 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20  ds.xRelease(..  
2f430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2f440 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 21  odule.xRelease !
2f450 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2f460 2e 78 52 65 6c 65 61 73 65 20 3a 20 78 52 65 6c  .xRelease : xRel
2f470 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
2f480 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f490 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65  xRollbackTo = ne
2f4a0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f4b0 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54  thods.xRollbackT
2f4c0 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
2f4d0 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c      (module.xRol
2f4e0 6c 62 61 63 6b 54 6f 20 21 3d 20 6e 75 6c 6c 29  lbackTo != null)
2f4f0 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62   ? module.xRollb
2f500 61 63 6b 54 6f 20 3a 0d 0a 20 20 20 20 20 20 20  ackTo :..       
2f510 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61           xRollba
2f520 63 6b 54 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ckTo);....      
2f530 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
2f540 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
2f550 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f5a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2f5b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2f5c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c          /// Call
2f5d0 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 69 72  s one of the vir
2f5e0 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 69 74 69  tual table initi
2f5f0 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64  alization method
2f600 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
2f610 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2f620 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2f630 61 6d 65 3d 22 63 72 65 61 74 65 22 3e 0d 0a 20  ame="create">.. 
2f640 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
2f650 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65 20  ero to call the 
2f660 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2f670 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
2f680 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20 20  Create" />..    
2f690 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20      /// method; 
2f6a0 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c  otherwise, the <
2f6b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f6c0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
2f6d0 6f 6e 6e 65 63 74 22 20 2f 3e 0d 0a 20 20 20 20  onnect" />..    
2f6e0 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77      /// method w
2f6f0 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a  ill be called...
2f700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2f710 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2f720 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2f730 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Db">..        //
2f740 2f 20 54 68 65 20 6e 61 74 69 76 65 20 64 61 74  / The native dat
2f750 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2f760 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20   handle...      
2f770 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2f780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2f790 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d  am name="pAux">.
2f7a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2f7b0 20 6f 72 69 67 69 6e 61 6c 20 6e 61 74 69 76 65   original native
2f7c0 20 70 6f 69 6e 74 65 72 20 76 61 6c 75 65 20 74   pointer value t
2f7d0 68 61 74 20 77 61 73 20 70 72 6f 76 69 64 65 64  hat was provided
2f7e0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
2f7f0 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65   /// sqlite3_cre
2f800 61 74 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73 71  ate_module(), sq
2f810 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
2f820 75 6c 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20 20  ule_v2() or..   
2f830 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
2f840 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2f850 6c 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63  le_module() func
2f860 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20  tions...        
2f870 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2f880 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2f890 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
2f8a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2f8b0 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
2f8c0 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41  ts from the CREA
2f8d0 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
2f8e0 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
2f8f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2f900 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2f910 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
2f920 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2f930 54 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72  The array of str
2f940 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 66 72  ing arguments fr
2f950 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49  om the CREATE VI
2f960 52 54 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20 20  RTUAL TABLE..   
2f970 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65       /// stateme
2f980 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
2f990 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2f9a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2f9b0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2f9c0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
2f9d0 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
2f9e0 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
2f9f0 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20  dified to point 
2fa00 74 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20  to the newly..  
2fa10 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65        /// create
2fa20 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  d native sqlite3
2fa30 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
2fa40 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
2fa50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2fa60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2fa70 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22  am name="pError"
2fa80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
2fa90 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69  pon failure, thi
2faa0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
2fab0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
2fac0 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 65 72 72  point to the err
2fad0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
2fae0 6d 65 73 73 61 67 65 2c 20 77 69 74 68 20 74 68  message, with th
2faf0 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65 6d  e underlying mem
2fb00 6f 72 79 20 68 61 76 69 6e 67 20 62 65 65 6e 20  ory having been 
2fb10 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
2fb20 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
2fb30 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
2fb40 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
2fb50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2fb60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
2fb70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2fb80 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
2fb90 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
2fba0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2fbb0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2fbc0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
2fbd0 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61  teErrorCode Crea
2fbe0 74 65 4f 72 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  teOrConnect(..  
2fbf0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 63            bool c
2fc00 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
2fc10 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
2fc20 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2fc30 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
2fc40 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
2fc50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
2fc60 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
2fc70 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
2fc80 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2fc90 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
2fca0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20  r pError..      
2fcb0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2fcc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2fcd0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2fce0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2fcf0 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
2fd00 61 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ame = SQLiteStri
2fd10 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng.StringFromUtf
2fd20 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  8IntPtr(..      
2fd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
2fd40 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2fd50 73 2e 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  s.sqlite3_db_fil
2fd60 65 6e 61 6d 65 28 70 44 62 2c 20 49 6e 74 50 74  ename(pDb, IntPt
2fd70 72 2e 5a 65 72 6f 29 29 3b 0d 0a 0d 0a 20 20 20  r.Zero));....   
2fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 69               usi
2fd90 6e 67 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ng (SQLiteConnec
2fda0 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  tion connection 
2fdb0 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e  = new SQLiteConn
2fdc0 65 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ection(..       
2fdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fde0 20 70 44 62 2c 20 66 69 6c 65 4e 61 6d 65 2c 20   pDb, fileName, 
2fdf0 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20  false))..       
2fe00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
2fe30 6c 65 20 74 61 62 6c 65 20 3d 20 6e 75 6c 6c 3b  le table = null;
2fe40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fe50 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
2fe60 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  or = null;....  
2fe70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe80 20 20 69 66 20 28 28 63 72 65 61 74 65 20 26 26    if ((create &&
2fe90 20 43 72 65 61 74 65 28 63 6f 6e 6e 65 63 74 69   Create(connecti
2fea0 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  on, pAux,..     
2feb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fec0 20 20 20 20 20 20 20 53 51 4c 69 74 65 53 74 72         SQLiteStr
2fed0 69 6e 67 2e 53 74 72 69 6e 67 41 72 72 61 79 46  ing.StringArrayF
2fee0 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e 64 49 6e  romUtf8SizeAndIn
2fef0 74 50 74 72 28 61 72 67 63 2c 0d 0a 20 20 20 20  tPtr(argc,..    
2ff00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff10 20 20 20 20 20 20 20 20 61 72 67 76 29 2c 20 72          argv), r
2ff20 65 66 20 74 61 62 6c 65 2c 20 72 65 66 20 65 72  ef table, ref er
2ff30 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65 45 72  ror) == SQLiteEr
2ff40 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 7c 7c 0d 0a  rorCode.Ok) ||..
2ff50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff60 20 20 20 20 20 20 20 20 28 21 63 72 65 61 74 65          (!create
2ff70 20 26 26 20 43 6f 6e 6e 65 63 74 28 63 6f 6e 6e   && Connect(conn
2ff80 65 63 74 69 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20  ection, pAux,.. 
2ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffa0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2ffb0 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 41 72  eString.StringAr
2ffc0 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41  rayFromUtf8SizeA
2ffd0 6e 64 49 6e 74 50 74 72 28 61 72 67 63 2c 0d 0a  ndIntPtr(argc,..
2ffe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fff0 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76              argv
30000 29 2c 20 72 65 66 20 74 61 62 6c 65 2c 20 72 65  ), ref table, re
30010 66 20 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69  f error) == SQLi
30020 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29  teErrorCode.Ok))
30030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30040 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30060 20 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75   if (table != nu
30070 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
30080 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
30090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300a0 20 20 20 20 20 20 20 20 20 20 20 20 70 56 74 61              pVta
300b0 62 20 3d 20 54 61 62 6c 65 54 6f 49 6e 74 50 74  b = TableToIntPt
300c0 72 28 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20  r(table);..     
300d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
300f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
30100 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30110 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30130 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
30140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30150 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30170 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
30180 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
30190 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  PtrFromString(..
301a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301c0 22 6e 6f 20 74 61 62 6c 65 20 77 61 73 20 63 72  "no table was cr
301d0 65 61 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  eated");..      
301e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30200 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30220 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
30230 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30250 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51       pError = SQ
30260 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
30270 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
30280 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  error);..       
30290 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
302a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
302c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
302d0 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
302e0 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20  ) /* NOTE: Must 
302f0 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20  catch ALL. */.. 
30300 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
30320 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
30330 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
30340 6f 6d 53 74 72 69 6e 67 28 65 2e 54 6f 53 74 72  omString(e.ToStr
30350 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ing());..       
30360 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30370 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
30380 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
30390 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  or;..        }..
303a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
303b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
30400 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
30410 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e      /// Calls on
30420 65 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  e of the virtual
30430 20 74 61 62 6c 65 20 66 69 6e 61 6c 69 7a 61 74   table finalizat
30440 69 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20  ion methods...  
30450 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
30460 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
30470 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
30480 65 73 74 72 6f 79 22 3e 0d 0a 20 20 20 20 20 20  estroy">..      
30490 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74    /// Non-zero t
304a0 6f 20 63 61 6c 6c 20 74 68 65 20 3c 73 65 65 20  o call the <see 
304b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
304c0 61 67 65 64 4d 6f 64 75 6c 65 2e 44 65 73 74 72  agedModule.Destr
304d0 6f 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  oy" />..        
304e0 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65  /// method; othe
304f0 72 77 69 73 65 2c 20 74 68 65 0d 0a 20 20 20 20  rwise, the..    
30500 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
30510 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
30520 64 4d 6f 64 75 6c 65 2e 44 69 73 63 6f 6e 6e 65  dModule.Disconne
30530 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ct" /> method wi
30540 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ll be..        /
30550 2f 2f 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  // called...    
30560 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
30570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
30580 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
30590 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
305a0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
305b0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
305c0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
305d0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
305e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
305f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
30600 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
30610 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
30620 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
30630 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
30640 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
30650 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
30660 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65 73 74  teErrorCode Dest
30670 72 6f 79 4f 72 44 69 73 63 6f 6e 6e 65 63 74 28  royOrDisconnect(
30680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
30690 6f 6c 20 64 65 73 74 72 6f 79 2c 0d 0a 20 20 20  ol destroy,..   
306a0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
306b0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
306c0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
306d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
306e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
306f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30700 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
30710 62 6c 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c  ble table = Tabl
30720 65 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61  eFromIntPtr(pVta
30730 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
30740 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
30750 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
30760 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30780 20 20 69 66 20 28 28 64 65 73 74 72 6f 79 20 26    if ((destroy &
30790 26 20 28 44 65 73 74 72 6f 79 28 74 61 62 6c 65  & (Destroy(table
307a0 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  ) == SQLiteError
307b0 43 6f 64 65 2e 4f 6b 29 29 20 7c 7c 0d 0a 20 20  Code.Ok)) ||..  
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307d0 20 20 20 20 20 20 28 21 64 65 73 74 72 6f 79 20        (!destroy 
307e0 26 26 20 28 44 69 73 63 6f 6e 6e 65 63 74 28 74  && (Disconnect(t
307f0 61 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 45  able) == SQLiteE
30800 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 29 0d 0a  rrorCode.Ok)))..
30810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30820 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30840 66 20 28 74 61 62 6c 65 73 20 21 3d 20 6e 75 6c  f (tables != nul
30850 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
30860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30870 74 61 62 6c 65 73 2e 52 65 6d 6f 76 65 28 70 56  tables.Remove(pV
30880 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
30890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308a0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
308b0 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20  rorCode.Ok;..   
308c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
308e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
308f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30900 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
30910 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d  on e) /* NOTE: M
30920 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a  ust catch ALL. *
30930 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
30940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30950 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
30960 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
30970 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 74 68  t this point, th
30980 65 72 65 20 69 73 20 6e 6f 20 77 61 79 20 74 6f  ere is no way to
30990 20 72 65 70 6f 72 74 20 74 68 65 20 65 72 72 6f   report the erro
309a0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
309b0 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 64     //       cond
309c0 69 74 69 6f 6e 20 62 61 63 6b 20 74 6f 20 74 68  ition back to th
309d0 65 20 63 61 6c 6c 65 72 3b 20 74 68 65 72 65 66  e caller; theref
309e0 6f 72 65 2c 20 75 73 65 20 74 68 65 0d 0a 20 20  ore, use the..  
309f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
30a00 20 20 20 20 20 20 20 6c 6f 67 67 69 6e 67 20 66         logging f
30a10 61 63 69 6c 69 74 79 20 69 6e 73 74 65 61 64 2e  acility instead.
30a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30a30 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
30a40 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
30a50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a70 20 20 69 66 20 28 4c 6f 67 45 78 63 65 70 74 69    if (LogExcepti
30a80 6f 6e 73 4e 6f 54 68 72 6f 77 29 0d 0a 20 20 20  onsNoThrow)..   
30a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30aa0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30ab0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 74              /* t
30ac0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
30ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ae0 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65   SQLiteLog.LogMe
30af0 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73 65  ssage(SQLiteBase
30b00 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e  .COR_E_EXCEPTION
30b10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
30b30 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30b40 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
30b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
30b70 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
30b80 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
30b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ba0 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20 65         "Caught e
30bb0 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30  xception in \"{0
30bc0 7d 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22  }\" method: {1}"
30bd0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
30bf0 65 73 74 72 6f 79 20 3f 20 22 78 44 65 73 74 72  estroy ? "xDestr
30c00 6f 79 22 20 3a 20 22 78 44 69 73 63 6f 6e 6e 65  oy" : "xDisconne
30c10 63 74 22 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20  ct", e));..     
30c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30c40 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30c50 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
30c60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c80 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
30c90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30ca0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30cb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30cc0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
30cd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30ce0 20 20 20 20 20 20 20 20 20 46 72 65 65 54 61 62           FreeTab
30cf0 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  le(pVtab);..    
30d00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
30d10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
30d20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
30d30 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  Error;..        
30d40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
30d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d60 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30da0 23 72 65 67 69 6f 6e 20 53 74 61 74 69 63 20 45  #region Static E
30db0 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20 48 65  rror Handling He
30dc0 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
30dd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
30de0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
30df0 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
30e00 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
30e10 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
30e20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
30e30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
30e40 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
30e50 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
30e60 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
30e70 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
30e80 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
30e90 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
30ea0 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
30eb0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
30ec0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
30ed0 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
30ee0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
30ef0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
30f00 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
30f10 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
30f20 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
30f30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
30f40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
30f50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
30f60 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
30f70 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
30f80 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
30f90 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
30fa0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
30fb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
30fc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
30fd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45  param name="logE
30fe0 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20  rrors">..       
30ff0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
31000 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73   this error mess
31010 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20  age should also 
31020 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
31030 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
31040 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
31050 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
31060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
31070 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
31080 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
31090 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e  "logExceptions">
310a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
310b0 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74  n-zero if caught
310c0 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75   exceptions shou
310d0 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  ld be logged usi
310e0 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
310f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
31100 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
31110 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
31120 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
31130 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
31140 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
31150 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72       /// The err
31160 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
31170 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
31180 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
31190 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
311a0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
311b0 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
311c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
311d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
311e0 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
311f0 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28  l SetTableError(
31200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
31210 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
31220 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
31230 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
31240 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
31250 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20  logErrors,..    
31260 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67          bool log
31270 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20  Exceptions,..   
31280 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
31290 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
312a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
312b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
312c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
312d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
312e0 20 69 66 20 28 6c 6f 67 45 72 72 6f 72 73 29 0d   if (logErrors).
312f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31300 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31310 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f          SQLiteLo
31320 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c  g.LogMessage(SQL
31330 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
31340 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
31350 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
31360 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31370 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
31380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31390 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
313a0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
313b0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
313c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 56 69               "Vi
313d0 72 74 75 61 6c 20 74 61 62 6c 65 20 65 72 72 6f  rtual table erro
313e0 72 3a 20 7b 30 7d 22 2c 20 65 72 72 6f 72 29 29  r: {0}", error))
313f0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
31400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31420 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
31430 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
31440 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31450 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
31460 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ...            }
31470 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31480 62 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66  bool success = f
31490 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
314a0 20 20 20 49 6e 74 50 74 72 20 70 4e 65 77 45 72     IntPtr pNewEr
314b0 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ror = IntPtr.Zer
314c0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
314d0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
314e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
314f0 20 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20        if (pVtab 
31500 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
31510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31520 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
31530 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
31540 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74        int offset
31550 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
31560 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
31570 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
31580 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
31590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315a0 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
315b0 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69  r.Size, sizeof(i
315c0 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
315d0 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
315e0 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
315f0 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
31600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31610 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
31620 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
31630 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
31640 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
31650 70 4f 6c 64 45 72 72 6f 72 20 3d 20 53 51 4c 69  pOldError = SQLi
31660 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
31670 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73  tPtr(pVtab, offs
31680 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
31690 20 20 20 20 20 20 20 20 69 66 20 28 70 4f 6c 64          if (pOld
316a0 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  Error != IntPtr.
316b0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
316c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
316d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
316e0 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28  LiteMemory.Free(
316f0 70 4f 6c 64 45 72 72 6f 72 29 3b 20 70 4f 6c 64  pOldError); pOld
31700 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a  Error = IntPtr.Z
31710 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
31720 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
31730 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
31740 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65  Ptr(pVtab, offse
31750 74 2c 20 70 4f 6c 64 45 72 72 6f 72 29 3b 0d 0a  t, pOldError);..
31760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31770 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31780 20 20 20 20 20 69 66 20 28 65 72 72 6f 72 20 3d       if (error =
31790 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
317a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
317b0 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  urn true;....   
317c0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e 65               pNe
317d0 77 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53  wError = SQLiteS
317e0 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72  tring.Utf8IntPtr
317f0 46 72 6f 6d 53 74 72 69 6e 67 28 65 72 72 6f 72  FromString(error
31800 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31810 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
31820 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 56  l.WriteIntPtr(pV
31830 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 70 4e 65  tab, offset, pNe
31840 77 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  wError);..      
31850 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65 73            succes
31860 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  s = true;..     
31870 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31880 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
31890 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54  eption e) /* NOT
318a0 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c  E: Must catch AL
318b0 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  L. */..         
318c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
318d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
318e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
318f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31900 20 20 69 66 20 28 6c 6f 67 45 78 63 65 70 74 69    if (logExcepti
31910 6f 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ons)..          
31920 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31940 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c       SQLiteLog.L
31950 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65  ogMessage(SQLite
31960 42 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50  Base.COR_E_EXCEP
31970 54 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20  TION,..         
31980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31990 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
319a0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
319b0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
319c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319d0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
319e0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
319f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a00 20 20 20 20 20 20 20 20 20 20 20 22 43 61 75 67             "Caug
31a10 68 74 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20  ht exception in 
31a20 5c 22 53 65 74 54 61 62 6c 65 45 72 72 6f 72 5c  \"SetTableError\
31a30 22 20 6d 65 74 68 6f 64 3a 20 7b 30 7d 22 2c 0d  " method: {0}",.
31a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31a50 20 20 20 20 20 20 20 20 20 20 20 20 20 65 29 29               e))
31a60 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
31a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31a90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31aa0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
31ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ac0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31ad0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
31ae0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
31af0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31b00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31b10 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
31b20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31b30 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
31b40 28 21 73 75 63 63 65 73 73 20 26 26 20 28 70 4e  (!success && (pN
31b50 65 77 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74  ewError != IntPt
31b60 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20  r.Zero))..      
31b70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b90 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72   SQLiteMemory.Fr
31ba0 65 65 28 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a  ee(pNewError);..
31bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31bc0 20 20 20 20 70 4e 65 77 45 72 72 6f 72 20 3d 20      pNewError = 
31bd0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
31be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
31bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
31c10 74 75 72 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20  turn success;.. 
31c20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
31c30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
31c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
31c80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
31c90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
31ca0 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74  / Arranges for t
31cb0 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
31cc0 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65  or message to be
31cd0 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65   placed into the
31ce0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45  ..        /// zE
31cf0 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61  rrMsg field of a
31d00 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
31d10 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c  rived structure,
31d20 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20   freeing the..  
31d30 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69        /// existi
31d40 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ng error message
31d50 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
31d60 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
31d70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
31d80 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
31d90 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
31da0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
31db0 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
31dc0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
31dd0 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20  e to be used... 
31de0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
31df0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
31e00 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
31e10 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
31e20 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
31e30 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
31e40 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
31e50 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
31e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
31e70 6f 6b 75 70 20 74 68 65 20 6e 61 74 69 76 65 20  okup the native 
31e80 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
31e90 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
31ea0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
31eb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
31ec0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
31ed0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
31ee0 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20  ogErrors">..    
31ef0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
31f00 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d   if this error m
31f10 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c  essage should al
31f20 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  so be logged usi
31f30 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
31f40 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
31f50 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
31f60 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
31f70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
31f80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
31f90 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e  me="logException
31fa0 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
31fb0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75   Non-zero if cau
31fc0 67 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73  ght exceptions s
31fd0 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20  hould be logged 
31fe0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
31ff0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
32000 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
32010 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
32020 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32030 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32040 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
32050 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32060 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
32070 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
32080 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32090 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
320a0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
320b0 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
320c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
320d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
320e0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
320f0 62 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72  bool SetTableErr
32100 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
32110 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
32120 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  dule,..         
32130 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
32140 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20  Table table,..  
32150 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c            bool l
32160 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20  ogErrors,..     
32170 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
32180 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20  xceptions,..    
32190 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65          string e
321a0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
321b0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
321c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
321d0 74 61 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  table == null)..
321e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321f0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
32200 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
32210 50 74 72 20 70 56 74 61 62 20 3d 20 74 61 62 6c  Ptr pVtab = tabl
32220 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d  e.NativeHandle;.
32230 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
32240 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50  f (pVtab == IntP
32250 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
32260 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
32270 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
32280 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 65         return Se
32290 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20  tTableError(..  
322a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
322b0 64 75 6c 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67  dule, pVtab, log
322c0 45 72 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70  Errors, logExcep
322d0 74 69 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a  tions, error);..
322e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
322f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
32340 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
32350 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
32360 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20  // Arranges for 
32370 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72  the specified er
32380 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62  ror message to b
32390 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68  e placed into th
323a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a  e..        /// z
323b0 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20  ErrMsg field of 
323c0 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  a sqlite3_vtab d
323d0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
323e0 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20  , freeing the.. 
323f0 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74         /// exist
32400 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ing error messag
32410 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  e, if any...    
32420 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
32430 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
32440 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
32450 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ule">..        /
32460 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
32470 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
32480 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
32490 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a  ce to be used...
324a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
324b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
324c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
324d0 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
324e0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
324f0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
32500 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
32510 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
32520 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f  cture..        /
32530 2f 2f 20 75 73 65 64 20 74 6f 20 67 65 74 20 74  // used to get t
32540 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
32550 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
32560 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20  _vtab derived.. 
32570 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
32580 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
32590 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
325a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
325b0 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22  name="logErrors"
325c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
325d0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20  on-zero if this 
325e0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68  error message sh
325f0 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67  ould also be log
32600 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ged using the.. 
32610 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
32620 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22  cref="SQLiteLog"
32630 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
32640 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
32650 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32660 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78  aram name="logEx
32670 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20  ceptions">..    
32680 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
32690 20 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70   if caught excep
326a0 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20  tions should be 
326b0 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65  logged using the
326c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
326d0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
326e0 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  og" /> class... 
326f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
32700 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
32710 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
32720 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
32730 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73  // The error mes
32740 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sage...        /
32750 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
32760 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
32770 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
32780 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
32790 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
327a0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
327b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
327c0 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43  static bool SetC
327d0 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20  ursorError(..   
327e0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
327f0 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20  odule module,.. 
32800 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
32810 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
32820 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67          bool log
32830 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
32840 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63       bool logExc
32850 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20  eptions,..      
32860 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
32870 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
32880 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
32890 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
328a0 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e  ursor == IntPtr.
328b0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
328c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
328d0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
328e0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
328f0 20 3d 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73   = TableFromCurs
32900 6f 72 28 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73  or(module, pCurs
32910 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
32920 20 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d      if (pVtab ==
32930 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
32940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
32950 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
32960 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32970 72 6e 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72  rn SetTableError
32980 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32990 20 20 20 6d 6f 64 75 6c 65 2c 20 70 56 74 61 62     module, pVtab
329a0 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67  , logErrors, log
329b0 45 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f  Exceptions, erro
329c0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  r);..        }..
329d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
329e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
32a30 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
32a40 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73      /// Arranges
32a50 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
32a60 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ed error message
32a70 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e   to be placed in
32a80 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
32a90 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c  /// zErrMsg fiel
32aa0 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76  d of a sqlite3_v
32ab0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
32ac0 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74  cture, freeing t
32ad0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
32ae0 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d  existing error m
32af0 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d  essage, if any..
32b00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
32b10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
32b20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
32b30 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
32b40 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
32b50 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
32b60 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
32b70 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73  nstance to be us
32b80 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
32b90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32ba0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32bb0 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20  me="cursor">..  
32bc0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
32bd0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
32be0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
32bf0 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
32c00 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a 20  tance used to.. 
32c10 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75         /// looku
32c20 70 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69  p the native poi
32c30 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
32c40 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
32c50 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
32c60 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32c70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32c80 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45  param name="logE
32c90 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20  rrors">..       
32ca0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
32cb0 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73   this error mess
32cc0 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20  age should also 
32cd0 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
32ce0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32cf0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
32d00 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
32d10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
32d20 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
32d30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
32d40 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e  "logExceptions">
32d50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
32d60 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74  n-zero if caught
32d70 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75   exceptions shou
32d80 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  ld be logged usi
32d90 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
32da0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
32db0 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
32dc0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32dd0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32de0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32df0 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
32e00 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72       /// The err
32e10 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
32e20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32e30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32e40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
32e50 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
32e60 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
32e70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
32e80 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
32e90 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
32ea0 6c 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72  l SetCursorError
32eb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
32ec0 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
32ed0 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
32ee0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
32ef0 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
32f00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
32f10 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a  ool logErrors,..
32f20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
32f30 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d   logExceptions,.
32f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
32f50 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ing error..     
32f60 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
32f70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32f80 20 69 66 20 28 63 75 72 73 6f 72 20 3d 3d 20 6e   if (cursor == n
32f90 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
32fa0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
32fb0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
32fc0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
32fd0 72 20 3d 20 63 75 72 73 6f 72 2e 4e 61 74 69 76  r = cursor.Nativ
32fe0 65 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20  eHandle;....    
32ff0 20 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72          if (pCur
33000 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  sor == IntPtr.Ze
33010 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
33020 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
33030 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
33040 20 20 72 65 74 75 72 6e 20 53 65 74 43 75 72 73    return SetCurs
33050 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  orError(..      
33060 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
33070 2c 20 70 43 75 72 73 6f 72 2c 20 6c 6f 67 45 72  , pCursor, logEr
33080 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69  rors, logExcepti
33090 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20  ons, error);..  
330a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
330b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
330c0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
330d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
330e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33120 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
33130 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20  egion Protected 
33140 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
33150 20 23 72 65 67 69 6f 6e 20 4d 6f 64 75 6c 65 20   #region Module 
33160 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
33170 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
33180 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33190 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
331a0 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65  rns the <see cre
331b0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
331c0 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72  Module" /> inter
331d0 66 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  face..        //
331e0 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
331f0 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e   to be used when
33200 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 6e 61   creating the na
33210 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64  tive sqlite3_mod
33220 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ule..        ///
33230 20 73 74 72 75 63 74 75 72 65 2e 20 20 44 65 72   structure.  Der
33240 69 76 65 64 20 63 6c 61 73 73 65 73 20 6d 61 79  ived classes may
33250 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6d   override this m
33260 65 74 68 6f 64 20 74 6f 20 73 75 70 70 6c 79 20  ethod to supply 
33270 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
33280 61 6c 74 65 72 6e 61 74 65 20 69 6d 70 6c 65 6d  alternate implem
33290 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  entation for the
332a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
332b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
332c0 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
332d0 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20   interface...   
332e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
332f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33300 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
33310 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
33320 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
33330 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
33340 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
33350 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20  ntation to..    
33360 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20      /// be used 
33370 77 68 65 6e 20 70 6f 70 75 6c 61 74 69 6e 67 20  when populating 
33380 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
33390 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  e3_module struct
333a0 75 72 65 2e 20 20 49 66 0d 0a 20 20 20 20 20 20  ure.  If..      
333b0 20 20 2f 2f 2f 20 74 68 65 20 72 65 74 75 72 6e    /// the return
333c0 65 64 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c  ed value is null
333d0 2c 20 74 68 65 20 70 72 69 76 61 74 65 20 6d 65  , the private me
333e0 74 68 6f 64 73 20 70 72 6f 76 69 64 65 64 20 62  thods provided b
333f0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
33400 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
33410 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
33420 6c 61 73 73 20 61 6e 64 20 72 65 6c 61 74 69 6e  lass and relatin
33430 67 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  g to the..      
33440 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
33450 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
33460 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
33470 63 65 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64  ce  will be used
33480 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
33490 20 63 72 65 61 74 65 20 74 68 65 20 6e 65 63 65   create the nece
334a0 73 73 61 72 79 20 64 65 6c 65 67 61 74 65 73 2e  ssary delegates.
334b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
334c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
334d0 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
334e0 75 61 6c 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ual ISQLiteNativ
334f0 65 4d 6f 64 75 6c 65 20 47 65 74 4e 61 74 69 76  eModule GetNativ
33500 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20  eModuleImpl().. 
33510 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33520 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
33530 6c 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55 73 65 20  l; /* NOTE: Use 
33540 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 64 65 66  the built-in def
33550 61 75 6c 74 20 64 65 6c 65 67 61 74 65 73 2e 20  ault delegates. 
33560 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  */..        }...
33570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
33580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
335d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
335e0 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
335f0 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
33600 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
33610 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
33620 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  >..        /// i
33630 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
33640 6e 74 61 74 69 6f 6e 20 63 6f 72 72 65 73 70 6f  ntation correspo
33650 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72  nding to the cur
33660 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rent..        //
33670 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
33680 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
33690 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
336a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
336b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
336c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
336d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
336e0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
336f0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
33700 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c  > interface impl
33710 65 6d 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20  ementation..    
33720 20 20 20 20 2f 2f 2f 20 63 6f 72 72 65 73 70 6f      /// correspo
33730 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72  nding to the cur
33740 72 65 6e 74 20 3c 73 65 65 20 63 72 65 66 3d 22  rent <see cref="
33750 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
33760 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
33770 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   /// instance...
33780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
33790 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
337a0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
337b0 6c 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  l ISQLiteNativeM
337c0 6f 64 75 6c 65 20 43 72 65 61 74 65 4e 61 74 69  odule CreateNati
337d0 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a  veModuleImpl()..
337e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
337f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
33800 77 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  w SQLiteNativeMo
33810 64 75 6c 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  dule(this);..   
33820 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
33830 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
33840 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
33850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
33890 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
338a0 20 4e 61 74 69 76 65 20 54 61 62 6c 65 20 48 65   Native Table He
338b0 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
338c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
338d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
338e0 20 41 6c 6c 6f 63 61 74 65 73 20 61 20 6e 61 74   Allocates a nat
338f0 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
33900 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
33910 72 65 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  re and returns a
33920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
33930 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
33940 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  it...        ///
33950 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
33960 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
33970 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
33980 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  A native pointer
33990 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
339a0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
339b0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
339c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
339d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
339e0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
339f0 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 54  IntPtr AllocateT
33a00 61 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  able()..        
33a10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
33a20 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72 73 68 61  nt size = Marsha
33a30 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
33a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33a50 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
33a60 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 74  thods.sqlite3_vt
33a70 61 62 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ab));....       
33a80 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
33a90 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
33aa0 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20  e(size);..      
33ab0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
33ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33b10 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
33b20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72  .        /// Zer
33b30 6f 73 20 6f 75 74 20 74 68 65 20 66 69 65 6c 64  os out the field
33b40 73 20 6f 66 20 61 20 6e 61 74 69 76 65 20 73 71  s of a native sq
33b50 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
33b60 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
33b70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
33b80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33b90 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
33ba0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
33bb0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
33bc0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e  pointer to the n
33bd0 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
33be0 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
33bf0 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20  ture to..       
33c00 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20   /// zero...    
33c10 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
33c20 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
33c30 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64  ted virtual void
33c40 20 5a 65 72 6f 54 61 62 6c 65 28 0d 0a 20 20 20   ZeroTable(..   
33c50 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
33c60 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
33c70 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
33c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
33c90 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72  (pVtab == IntPtr
33ca0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
33cb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
33cc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
33cd0 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a  nt offset = 0;..
33ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
33cf0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
33d00 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f  eIntPtr(pVtab, o
33d10 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65  ffset, IntPtr.Ze
33d20 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
33d30 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
33d40 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
33d50 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
33d60 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
33d70 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
33d80 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
33d90 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
33da0 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
33db0 6e 74 33 32 28 70 56 74 61 62 2c 20 6f 66 66 73  nt32(pVtab, offs
33dc0 65 74 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20  et, 0);....     
33dd0 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
33de0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
33df0 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
33e00 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
33e10 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
33e20 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d  , IntPtr.Size);.
33e30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
33e40 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
33e50 74 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20  teIntPtr(pVtab, 
33e60 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a  offset, IntPtr.Z
33e70 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ero);..        }
33e80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
33e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
33ee0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
33ef0 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20        /// Frees 
33f00 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  a native sqlite3
33f10 5f 76 74 61 62 20 73 74 72 75 63 74 75 72 65 20  _vtab structure 
33f20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 76 69 64  using the provid
33f30 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  ed native..     
33f40 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74     /// pointer t
33f50 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  o it...        /
33f60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
33f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
33f80 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
33f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e  .        /// A n
33fa0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
33fb0 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65   a native sqlite
33fc0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
33fd0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
33fe0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
33ff0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
34000 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
34010 46 72 65 65 54 61 62 6c 65 28 0d 0a 20 20 20 20  FreeTable(..    
34020 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
34030 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
34040 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
34050 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
34060 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
34070 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20   null);..       
34080 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
34090 79 2e 46 72 65 65 28 70 56 74 61 62 29 3b 0d 0a  y.Free(pVtab);..
340a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
340b0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
340c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
340d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
34120 69 6f 6e 20 4e 61 74 69 76 65 20 43 75 72 73 6f  ion Native Curso
34130 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  r Helper Methods
34140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
34150 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
34160 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61   /// Allocates a
34170 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
34180 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
34190 76 65 64 20 73 74 72 75 63 74 75 72 65 20 61 6e  ved structure an
341a0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72  d..        /// r
341b0 65 74 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20  eturns a native 
341c0 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a  pointer to it...
341d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
341e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
341f0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
34200 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74         /// A nat
34210 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
34220 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
34230 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
34240 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
34250 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
34260 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
34270 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
34280 6c 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74  l IntPtr Allocat
34290 65 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20  eCursor()..     
342a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
342b0 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72    int size = Mar
342c0 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
342d0 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
342e0 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
342f0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
34300 5f 76 74 61 62 5f 63 75 72 73 6f 72 29 29 3b 0d  _vtab_cursor));.
34310 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
34320 65 74 75 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f  eturn SQLiteMemo
34330 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65  ry.Allocate(size
34340 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
34350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
34360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
343b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
343c0 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e     /// Frees a n
343d0 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
343e0 61 62 5f 63 75 72 73 6f 72 20 73 74 72 75 63 74  ab_cursor struct
343f0 75 72 65 20 75 73 69 6e 67 20 74 68 65 20 70 72  ure using the pr
34400 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20 20  ovided..        
34410 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  /// native point
34420 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20  er to it...     
34430 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
34440 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
34450 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
34460 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
34470 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e  // A native poin
34480 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20  ter to a native 
34490 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
344a0 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
344b0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
344c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
344d0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
344e0 76 69 72 74 75 61 6c 20 76 6f 69 64 20 46 72 65  virtual void Fre
344f0 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20  eCursor(..      
34500 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
34510 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
34520 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
34530 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
34540 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43  teMemory.Free(pC
34550 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
34560 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
34570 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
34580 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
345d0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61       #region Sta
345e0 74 69 63 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70  tic Table Lookup
345f0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
34600 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
34610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
34620 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ds and returns t
34630 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
34640 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
34650 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20  _vtab derived.. 
34660 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
34670 74 75 72 65 20 62 61 73 65 64 20 6f 6e 20 74 68  ture based on th
34680 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
34690 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
346a0 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20  vtab_cursor..   
346b0 20 20 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 64       /// derived
346c0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
346d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
346e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
346f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
34700 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  dule">..        
34710 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
34720 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
34730 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
34740 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d  nce to be used..
34750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
34760 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
34770 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
34780 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
34790 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
347a0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
347b0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
347c0 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
347d0 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ucture..        
347e0 2f 2f 2f 20 66 72 6f 6d 20 77 68 69 63 68 20 74  /// from which t
347f0 6f 20 72 65 61 64 20 74 68 65 20 6e 61 74 69 76  o read the nativ
34800 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
34810 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
34820 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  rived..        /
34830 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
34840 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
34850 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
34860 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
34870 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
34880 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
34890 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
348a0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
348b0 20 2d 4f 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f   -OR-..        /
348c0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
348d0 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
348e0 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
348f0 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
34900 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
34910 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
34920 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  te static IntPtr
34930 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72   TableFromCursor
34940 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
34950 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
34960 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
34970 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
34980 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
34990 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
349a0 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73         if (pCurs
349b0 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or == IntPtr.Zer
349c0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
349d0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
349e0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
349f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61         return Ma
34a00 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
34a10 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
34a20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
34a30 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
34a40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34a90 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
34aa0 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65 74  Table Lookup Met
34ab0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
34ac0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
34ad0 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61       /// Reads a
34ae0 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  nd returns the n
34af0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
34b00 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
34b10 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20  b derived..     
34b20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
34b30 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e 61   based on the na
34b40 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
34b50 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
34b60 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  _cursor..       
34b70 20 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74 72   /// derived str
34b80 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
34b90 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
34ba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
34bb0 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
34bc0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
34bd0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
34be0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
34bf0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
34c00 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
34c10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72  ..        /// fr
34c20 6f 6d 20 77 68 69 63 68 20 74 6f 20 72 65 61 64  om which to read
34c30 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
34c40 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
34c50 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
34c60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
34c70 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
34c80 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34c90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
34ca0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
34cb0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
34cc0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
34cd0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
34ce0 20 73 74 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d   structure -OR-.
34cf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
34d00 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
34d10 65 72 6f 22 20 2f 3e 20 69 66 20 69 74 20 63 61  ero" /> if it ca
34d20 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
34d30 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
34d40 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
34d50 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
34d60 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61  irtual IntPtr Ta
34d70 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a  bleFromCursor(..
34d80 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
34d90 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
34da0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
34db0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34dc0 20 20 72 65 74 75 72 6e 20 54 61 62 6c 65 46 72    return TableFr
34dd0 6f 6d 43 75 72 73 6f 72 28 74 68 69 73 2c 20 70  omCursor(this, p
34de0 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20  Cursor);..      
34df0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
34e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34e50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
34e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f  .        /// Loo
34e70 6b 73 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e  ks up and return
34e80 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
34e90 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
34ea0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a  ble" /> object..
34eb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
34ec0 61 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68  ance based on th
34ed0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
34ee0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
34ef0 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
34f00 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
34f10 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
34f20 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34f30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
34f40 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
34f50 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
34f60 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
34f70 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
34f80 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
34f90 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
34fa0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
34fb0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
34fc0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
34fd0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
34fe0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
34ff0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
35000 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c 20 69 66  tance or null if
35010 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
35020 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
35030 6f 6e 65 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f  one cannot be fo
35040 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  und...        //
35050 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
35060 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
35070 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69  virtual SQLiteVi
35080 72 74 75 61 6c 54 61 62 6c 65 20 54 61 62 6c 65  rtualTable Table
35090 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20  FromIntPtr(..   
350a0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
350b0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
350c0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
350d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
350e0 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72  (pVtab == IntPtr
350f0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
35100 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35110 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45         SetTableE
35120 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69 6e 76  rror(pVtab, "inv
35130 61 6c 69 64 20 6e 61 74 69 76 65 20 74 61 62 6c  alid native tabl
35140 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e");..          
35150 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
35160 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
35170 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
35180 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
35190 62 6c 65 20 74 61 62 6c 65 3b 0d 0a 0d 0a 20 20  ble table;....  
351a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74            if ((t
351b0 61 62 6c 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26  ables != null) &
351c0 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
351d0 20 20 20 74 61 62 6c 65 73 2e 54 72 79 47 65 74     tables.TryGet
351e0 56 61 6c 75 65 28 70 56 74 61 62 2c 20 6f 75 74  Value(pVtab, out
351f0 20 74 61 62 6c 65 29 29 0d 0a 20 20 20 20 20 20   table))..      
35200 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35210 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
35220 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  table;..        
35230 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
35240 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72       SetTableErr
35250 6f 72 28 70 56 74 61 62 2c 20 55 6e 73 61 66 65  or(pVtab, Unsafe
35260 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74  NativeMethods.St
35270 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
35280 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
35290 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
352a0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
352b0 20 20 20 20 20 20 20 20 20 20 22 6d 61 6e 61 67            "manag
352c0 65 64 20 74 61 62 6c 65 20 66 6f 72 20 7b 30 7d  ed table for {0}
352d0 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70 56 74   not found", pVt
352e0 61 62 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ab));....       
352f0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
35300 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
35310 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35360 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35370 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35380 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20    /// Allocates 
35390 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6e 61  and returns a na
353a0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
353b0 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  a sqlite3_vtab d
353c0 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
353d0 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 61 6e  /// structure an
353e0 64 20 63 72 65 61 74 65 73 20 61 6e 20 61 73 73  d creates an ass
353f0 6f 63 69 61 74 69 6f 6e 20 62 65 74 77 65 65 6e  ociation between
35400 20 69 74 20 61 6e 64 20 74 68 65 20 73 70 65 63   it and the spec
35410 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  ified..        /
35420 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
35430 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
35440 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
35450 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
35460 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
35470 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
35480 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
35490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
354a0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
354b0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
354c0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
354d0 63 65 20 74 6f 20 62 65 20 75 73 65 64 0d 0a 20  ce to be used.. 
354e0 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20         /// when 
354f0 63 72 65 61 74 69 6e 67 20 74 68 65 20 61 73 73  creating the ass
35500 6f 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  ociation...     
35510 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
35520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
35530 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
35540 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
35550 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69  ointer to a sqli
35560 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
35570 20 73 74 72 75 63 74 75 72 65 20 6f 72 0d 0a 20   structure or.. 
35580 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
35590 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
355a0 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 74  o" /> if the met
355b0 68 6f 64 20 66 61 69 6c 73 20 66 6f 72 20 61 6e  hod fails for an
355c0 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20  y reason...     
355d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
355e0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
355f0 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74  cted virtual Int
35600 50 74 72 20 54 61 62 6c 65 54 6f 49 6e 74 50 74  Ptr TableToIntPt
35610 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
35620 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
35630 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  le table..      
35640 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
35650 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35660 69 66 20 28 28 74 61 62 6c 65 20 3d 3d 20 6e 75  if ((table == nu
35670 6c 6c 29 20 7c 7c 20 28 74 61 62 6c 65 73 20 3d  ll) || (tables =
35680 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
35690 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
356a0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
356b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
356c0 50 74 72 20 70 56 74 61 62 20 3d 20 49 6e 74 50  Ptr pVtab = IntP
356d0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
356e0 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63 63 65        bool succe
356f0 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  ss = false;.... 
35700 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
35710 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
35720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
35730 56 74 61 62 20 3d 20 41 6c 6c 6f 63 61 74 65 54  Vtab = AllocateT
35740 61 62 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  able();....     
35750 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
35760 56 74 61 62 20 21 3d 20 49 6e 74 50 74 72 2e 5a  Vtab != IntPtr.Z
35770 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
35780 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35790 20 20 20 20 20 20 20 20 20 20 20 20 20 5a 65 72               Zer
357a0 6f 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a  oTable(pVtab);..
357b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
357c0 20 20 20 20 74 61 62 6c 65 2e 4e 61 74 69 76 65      table.Native
357d0 48 61 6e 64 6c 65 20 3d 20 70 56 74 61 62 3b 0d  Handle = pVtab;.
357e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
357f0 20 20 20 20 20 74 61 62 6c 65 73 2e 41 64 64 28       tables.Add(
35800 70 56 74 61 62 2c 20 74 61 62 6c 65 29 3b 0d 0a  pVtab, table);..
35810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35820 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74 72      success = tr
35830 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
35840 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
35850 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
35860 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
35870 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35880 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
35890 73 75 63 63 65 73 73 20 26 26 20 28 70 56 74 61  success && (pVta
358a0 62 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b != IntPtr.Zero
358b0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
358c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
358d0 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65 54             FreeT
358e0 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20 20  able(pVtab);..  
358f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35900 20 20 70 56 74 61 62 20 3d 20 49 6e 74 50 74 72    pVtab = IntPtr
35910 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
35920 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35930 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
35940 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
35950 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Vtab;..        }
35960 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
35970 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
35980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
359d0 20 20 20 23 72 65 67 69 6f 6e 20 43 75 72 73 6f     #region Curso
359e0 72 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73  r Lookup Methods
359f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
35a00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
35a10 20 2f 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61 6e   /// Looks up an
35a20 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
35a30 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
35a40 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
35a50 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  r" />..        /
35a60 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
35a70 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  ce based on the 
35a80 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
35a90 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
35aa0 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  // sqlite3_vtab_
35ab0 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
35ac0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
35ad0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
35ae0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35af0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
35b00 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
35b10 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
35b20 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
35b30 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
35b40 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
35b50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
35b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
35b70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
35b80 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
35b90 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
35ba0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
35bb0 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
35bc0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
35bd0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
35be0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
35bf0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
35c00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35c10 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
35c20 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
35c30 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
35c40 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
35c50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66  ..        /// if
35c60 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
35c70 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62 65  ng one cannot be
35c80 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20   found...       
35c90 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
35ca0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
35cb0 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ed virtual SQLit
35cc0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
35cd0 73 6f 72 20 43 75 72 73 6f 72 46 72 6f 6d 49 6e  sor CursorFromIn
35ce0 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
35cf0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
35d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
35d10 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
35d20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
35d30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35d40 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72 20      if (pCursor 
35d50 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
35d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
35d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35d80 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56  SetTableError(pV
35d90 74 61 62 2c 20 22 69 6e 76 61 6c 69 64 20 6e 61  tab, "invalid na
35da0 74 69 76 65 20 63 75 72 73 6f 72 22 29 3b 0d 0a  tive cursor");..
35db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35dc0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
35dd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
35de0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
35df0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
35e00 73 6f 72 20 63 75 72 73 6f 72 3b 0d 0a 0d 0a 20  sor cursor;.... 
35e10 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
35e20 63 75 72 73 6f 72 73 20 21 3d 20 6e 75 6c 6c 29  cursors != null)
35e30 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
35e40 20 20 20 20 20 63 75 72 73 6f 72 73 2e 54 72 79       cursors.Try
35e50 47 65 74 56 61 6c 75 65 28 70 43 75 72 73 6f 72  GetValue(pCursor
35e60 2c 20 6f 75 74 20 63 75 72 73 6f 72 29 29 0d 0a  , out cursor))..
35e70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
35e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
35e90 65 74 75 72 6e 20 63 75 72 73 6f 72 3b 0d 0a 20  eturn cursor;.. 
35ea0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
35eb0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
35ec0 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
35ed0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35ee0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
35ef0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
35f00 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
35f10 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
35f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35f30 20 22 6d 61 6e 61 67 65 64 20 63 75 72 73 6f 72   "managed cursor
35f40 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f 75   for {0} not fou
35f50 6e 64 22 2c 20 70 43 75 72 73 6f 72 29 29 3b 0d  nd", pCursor));.
35f60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
35f70 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
35f80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
35f90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
35fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35fe0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
35ff0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
36000 41 6c 6c 6f 63 61 74 65 73 20 61 6e 64 20 72 65  Allocates and re
36010 74 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70  turns a native p
36020 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69  ointer to a sqli
36030 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d  te3_vtab_cursor.
36040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72  .        /// der
36050 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20 61  ived structure a
36060 6e 64 20 63 72 65 61 74 65 73 20 61 6e 20 61 73  nd creates an as
36070 73 6f 63 69 61 74 69 6f 6e 20 62 65 74 77 65 65  sociation betwee
36080 6e 20 69 74 20 61 6e 64 20 74 68 65 0d 0a 20 20  n it and the..  
36090 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
360a0 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
360b0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
360c0 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
360d0 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
360e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
360f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
36100 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
36110 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
36120 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
36130 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
36140 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
36150 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
36160 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
36170 2f 2f 2f 20 75 73 65 64 20 77 68 65 6e 20 63 72  /// used when cr
36180 65 61 74 69 6e 67 20 74 68 65 20 61 73 73 6f 63  eating the assoc
36190 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  iation...       
361a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
361b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
361c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
361d0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
361e0 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65  nter to a sqlite
361f0 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
36200 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
36210 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
36220 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
36230 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74 68  r.Zero" /> if th
36240 65 20 6d 65 74 68 6f 64 20 66 61 69 6c 73 20 66  e method fails f
36250 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a  or any reason...
36260 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
36270 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
36280 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
36290 6c 20 49 6e 74 50 74 72 20 43 75 72 73 6f 72 54  l IntPtr CursorT
362a0 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  oIntPtr(..      
362b0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
362c0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
362d0 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
362e0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
362f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
36300 28 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c  ((cursor == null
36310 29 20 7c 7c 20 28 63 75 72 73 6f 72 73 20 3d 3d  ) || (cursors ==
36320 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
36330 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
36340 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
36350 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
36360 74 72 20 70 43 75 72 73 6f 72 20 3d 20 49 6e 74  tr pCursor = Int
36370 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
36380 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63 63         bool succ
36390 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a  ess = false;....
363a0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
363b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
363c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
363d0 70 43 75 72 73 6f 72 20 3d 20 41 6c 6c 6f 63 61  pCursor = Alloca
363e0 74 65 43 75 72 73 6f 72 28 29 3b 0d 0a 0d 0a 20  teCursor();.... 
363f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
36400 66 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49 6e  f (pCursor != In
36410 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
36420 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36440 20 20 20 63 75 72 73 6f 72 2e 4e 61 74 69 76 65     cursor.Native
36450 48 61 6e 64 6c 65 20 3d 20 70 43 75 72 73 6f 72  Handle = pCursor
36460 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
36470 20 20 20 20 20 20 20 63 75 72 73 6f 72 73 2e 41         cursors.A
36480 64 64 28 70 43 75 72 73 6f 72 2c 20 63 75 72 73  dd(pCursor, curs
36490 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
364a0 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65 73            succes
364b0 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  s = true;..     
364c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
364d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
364e0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
364f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
36500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36510 20 69 66 20 28 21 73 75 63 63 65 73 73 20 26 26   if (!success &&
36520 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49 6e 74   (pCursor != Int
36530 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20  Ptr.Zero))..    
36540 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36560 20 20 20 46 72 65 65 43 75 72 73 6f 72 28 70 43     FreeCursor(pC
36570 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
36580 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 75               pCu
36590 72 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65  rsor = IntPtr.Ze
365a0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
365b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
365c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
365d0 20 20 20 20 20 72 65 74 75 72 6e 20 70 43 75 72       return pCur
365e0 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  sor;..        }.
365f0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
36600 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
36610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36650 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36660 20 20 23 72 65 67 69 6f 6e 20 46 75 6e 63 74 69    #region Functi
36670 6f 6e 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64  on Lookup Method
36680 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
36690 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
366a0 20 20 2f 2f 2f 20 44 65 74 65 72 69 6d 69 6e 65    /// Deterimine
366b0 73 20 74 68 65 20 6b 65 79 20 74 68 61 74 20 73  s the key that s
366c0 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 74 6f  hould be used to
366d0 20 69 64 65 6e 74 69 66 79 20 61 6e 64 20 73 74   identify and st
366e0 6f 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ore the..       
366f0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
36700 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20  SQLiteFunction" 
36710 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
36720 63 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  ce for the virtu
36730 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
36740 20 20 2f 2f 2f 20 28 69 2e 65 2e 20 74 6f 20 62    /// (i.e. to b
36750 65 20 72 65 74 75 72 6e 65 64 20 76 69 61 20 74  e returned via t
36760 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
36770 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
36780 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
36790 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
367a0 20 6d 65 74 68 6f 64 29 2e 0d 0a 20 20 20 20 20   method)...     
367b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
367c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
367d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75  param name="argu
367e0 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20  mentCount">..   
367f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
36800 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
36810 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 20   to the virtual 
36820 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 2e 0d  table function..
36830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
36840 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
36850 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
36860 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  name">..        
36870 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
36880 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
36890 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  e function...   
368a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
368b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
368c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63  param name="func
368d0 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  tion">..        
368e0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
368f0 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  f="SQLiteFunctio
36900 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  n" /> object ins
36910 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
36920 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f   with..        /
36930 2f 2f 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  // this virtual 
36940 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 2e 0d  table function..
36950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
36960 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
36970 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
36980 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74        /// The st
36990 72 69 6e 67 20 74 68 61 74 20 73 68 6f 75 6c 64  ring that should
369a0 20 62 65 20 75 73 65 64 20 74 6f 20 69 64 65 6e   be used to iden
369b0 74 69 66 79 20 61 6e 64 20 73 74 6f 72 65 20 74  tify and store t
369c0 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20  he virtual..    
369d0 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 66 75      /// table fu
369e0 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e  nction instance.
369f0 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61    This method ca
36a00 6e 6e 6f 74 20 72 65 74 75 72 6e 20 6e 75 6c 6c  nnot return null
36a10 2e 20 20 49 66 20 6e 75 6c 6c 0d 0a 20 20 20 20  .  If null..    
36a20 20 20 20 20 2f 2f 2f 20 69 73 20 72 65 74 75 72      /// is retur
36a30 6e 65 64 20 66 72 6f 6d 20 74 68 69 73 20 6d 65  ned from this me
36a40 74 68 6f 64 2c 20 74 68 65 20 62 65 68 61 76 69  thod, the behavi
36a50 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e  or is undefined.
36a60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36a70 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
36a80 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
36a90 75 61 6c 20 73 74 72 69 6e 67 20 47 65 74 46 75  ual string GetFu
36aa0 6e 63 74 69 6f 6e 4b 65 79 28 0d 0a 20 20 20 20  nctionKey(..    
36ab0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 75          int argu
36ac0 6d 65 6e 74 43 6f 75 6e 74 2c 0d 0a 20 20 20 20  mentCount,..    
36ad0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
36ae0 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
36af0 20 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e    SQLiteFunction
36b00 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20   function..     
36b10 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
36b20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36b30 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
36b40 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72 69  tiveMethods.Stri
36b50 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
36b60 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
36b70 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
36b80 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
36b90 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 3a 7b            "{0}:{
36ba0 31 7d 22 2c 20 61 72 67 75 6d 65 6e 74 43 6f 75  1}", argumentCou
36bb0 6e 74 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20  nt, name);..    
36bc0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
36bd0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
36be0 20 20 20 20 20 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 2f  ////////////////
36c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
36c30 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
36c40 54 61 62 6c 65 20 44 65 63 6c 61 72 61 74 69 6f  Table Declaratio
36c50 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  n Helper Methods
36c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
36c70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
36c80 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
36c90 20 64 65 63 6c 61 72 65 20 74 68 65 20 73 63 68   declare the sch
36ca0 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72 74  ema for the virt
36cb0 75 61 6c 20 74 61 62 6c 65 20 75 73 69 6e 67 20  ual table using 
36cc0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
36cd0 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61 62   specified datab
36ce0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  ase connection..
36cf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
36d00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
36d10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
36d20 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a  ="connection">..
36d30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
36d40 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
36d50 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20  eConnection" /> 
36d60 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
36d70 74 6f 20 75 73 65 20 77 68 65 6e 0d 0a 20 20 20  to use when..   
36d80 20 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 69       /// declari
36d90 6e 67 20 74 68 65 20 73 63 68 65 6d 61 20 6f 66  ng the schema of
36da0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
36db0 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65  le.  This parame
36dc0 74 65 72 20 6d 61 79 20 6e 6f 74 0d 0a 20 20 20  ter may not..   
36dd0 20 20 20 20 20 2f 2f 2f 20 62 65 20 6e 75 6c 6c       /// be null
36de0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36df0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
36e00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
36e10 3d 22 73 71 6c 22 3e 0d 0a 20 20 20 20 20 20 20  ="sql">..       
36e20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20   /// The string 
36e30 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 43  containing the C
36e40 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
36e50 65 6d 65 6e 74 20 74 68 61 74 20 63 6f 6d 70 6c  ement that compl
36e60 65 74 65 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  etely..        /
36e70 2f 2f 20 64 65 73 63 72 69 62 65 73 20 74 68 65  // describes the
36e80 20 73 63 68 65 6d 61 20 66 6f 72 20 74 68 65 20   schema for the 
36e90 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20  virtual table.  
36ea0 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  This parameter m
36eb0 61 79 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  ay not..        
36ec0 2f 2f 2f 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  /// be null...  
36ed0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
36ee0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
36ef0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
36f00 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
36f10 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20  / Upon failure, 
36f20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
36f30 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
36f40 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72  to contain an er
36f50 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ror..        ///
36f60 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20   message...     
36f70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
36f80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
36f90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
36fa0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
36fb0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
36fc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
36fd0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
36fe0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
36ff0 72 74 75 61 6c 20 53 51 4c 69 74 65 45 72 72 6f  rtual SQLiteErro
37000 72 43 6f 64 65 20 44 65 63 6c 61 72 65 54 61 62  rCode DeclareTab
37010 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
37020 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
37030 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20  n connection,.. 
37040 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
37050 67 20 73 71 6c 2c 0d 0a 20 20 20 20 20 20 20 20  g sql,..        
37060 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
37070 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
37080 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
37090 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
370a0 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75  connection == nu
370b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
370c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
370d0 20 20 20 20 65 72 72 6f 72 20 3d 20 22 69 6e 76      error = "inv
370e0 61 6c 69 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 22  alid connection"
370f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
37100 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
37110 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
37120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
37130 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
37140 51 4c 69 74 65 42 61 73 65 20 73 71 6c 69 74 65  QLiteBase sqlite
37150 42 61 73 65 20 3d 20 63 6f 6e 6e 65 63 74 69 6f  Base = connectio
37160 6e 2e 5f 73 71 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n._sql;....     
37170 20 20 20 20 20 20 20 69 66 20 28 73 71 6c 69 74         if (sqlit
37180 65 42 61 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eBase == null)..
37190 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
371a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
371b0 72 72 6f 72 20 3d 20 22 63 6f 6e 6e 65 63 74 69  rror = "connecti
371c0 6f 6e 20 68 61 73 20 69 6e 76 61 6c 69 64 20 68  on has invalid h
371d0 61 6e 64 6c 65 22 3b 0d 0a 20 20 20 20 20 20 20  andle";..       
371e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
371f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
37200 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  Error;..        
37210 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
37220 20 20 20 20 20 69 66 20 28 73 71 6c 20 3d 3d 20       if (sql == 
37230 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
37240 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37250 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 69        error = "i
37260 6e 76 61 6c 69 64 20 53 51 4c 20 73 74 61 74 65  nvalid SQL state
37270 6d 65 6e 74 22 3b 0d 0a 20 20 20 20 20 20 20 20  ment";..        
37280 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
37290 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
372a0 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
372b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
372c0 20 20 20 20 72 65 74 75 72 6e 20 73 71 6c 69 74      return sqlit
372d0 65 42 61 73 65 2e 44 65 63 6c 61 72 65 56 69 72  eBase.DeclareVir
372e0 74 75 61 6c 54 61 62 6c 65 28 74 68 69 73 2c 20  tualTable(this, 
372f0 73 71 6c 2c 20 72 65 66 20 65 72 72 6f 72 29 3b  sql, ref error);
37300 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
37310 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
37320 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
37330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37370 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
37380 65 67 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 20 44  egion Function D
37390 65 63 6c 61 72 61 74 69 6f 6e 20 48 65 6c 70 65  eclaration Helpe
373a0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
373b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
373c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61  ..        /// Ca
373d0 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20 53  lls the native S
373e0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
373f0 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 64  ry in order to d
37400 65 63 6c 61 72 65 20 61 20 76 69 72 74 75 61 6c  eclare a virtual
37410 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61  ..        /// ta
37420 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20  ble function in 
37430 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20 63 61  response to a ca
37440 6c 6c 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20  ll into the..   
37450 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
37460 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
37470 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
37480 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
37490 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22 49   or <see cref="I
374a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
374b0 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  le.xConnect" /> 
374c0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
374d0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
374e0 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ds...        ///
374f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
37500 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
37510 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
37520 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37530 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
37540 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22  QLiteConnection"
37550 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
37560 6e 63 65 20 74 6f 20 75 73 65 20 77 68 65 6e 0d  nce to use when.
37570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 63  .        /// dec
37580 6c 61 72 69 6e 67 20 74 68 65 20 73 63 68 65 6d  laring the schem
37590 61 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  a of the virtual
375a0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
375b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
375c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
375d0 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74  m name="argument
375e0 43 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  Count">..       
375f0 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
37600 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20  of arguments to 
37610 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69  the function bei
37620 6e 67 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20  ng declared...  
37630 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37640 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
37650 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
37660 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
37670 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
37680 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20   function being 
37690 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20  declared...     
376a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
376b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
376c0 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
376d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
376e0 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 65  pon success, the
376f0 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69   contents of thi
37700 73 20 70 61 72 61 6d 65 74 65 72 20 61 72 65 20  s parameter are 
37710 75 6e 64 65 66 69 6e 65 64 2e 20 20 55 70 6f 6e  undefined.  Upon
37720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 61  ..        /// fa
37730 69 6c 75 72 65 2c 20 69 74 20 73 68 6f 75 6c 64  ilure, it should
37740 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70 72   contain an appr
37750 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20 6d 65  opriate error me
37760 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20  ssage...        
37770 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
37780 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
37790 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
377a0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
377b0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
377c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
377d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
377e0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
377f0 61 6c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  al SQLiteErrorCo
37800 64 65 20 44 65 63 6c 61 72 65 46 75 6e 63 74 69  de DeclareFuncti
37810 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
37820 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
37830 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20  n connection,.. 
37840 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
37850 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 0d 0a 20  rgumentCount,.. 
37860 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
37870 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  g name,..       
37880 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
37890 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
378a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
378b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
378c0 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e  (connection == n
378d0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
378e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
378f0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 69 6e       error = "in
37900 76 61 6c 69 64 20 63 6f 6e 6e 65 63 74 69 6f 6e  valid connection
37910 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
37920 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
37930 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
37940 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
37950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37960 53 51 4c 69 74 65 42 61 73 65 20 73 71 6c 69 74  SQLiteBase sqlit
37970 65 42 61 73 65 20 3d 20 63 6f 6e 6e 65 63 74 69  eBase = connecti
37980 6f 6e 2e 5f 73 71 6c 3b 0d 0a 0d 0a 20 20 20 20  on._sql;....    
37990 20 20 20 20 20 20 20 20 69 66 20 28 73 71 6c 69          if (sqli
379a0 74 65 42 61 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d  teBase == null).
379b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
379c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
379d0 65 72 72 6f 72 20 3d 20 22 63 6f 6e 6e 65 63 74  error = "connect
379e0 69 6f 6e 20 68 61 73 20 69 6e 76 61 6c 69 64 20  ion has invalid 
379f0 68 61 6e 64 6c 65 22 3b 0d 0a 20 20 20 20 20 20  handle";..      
37a00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37a10 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
37a20 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
37a30 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
37a40 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 71 6c        return sql
37a50 69 74 65 42 61 73 65 2e 44 65 63 6c 61 72 65 56  iteBase.DeclareV
37a60 69 72 74 75 61 6c 46 75 6e 63 74 69 6f 6e 28 0d  irtualFunction(.
37a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37a80 20 74 68 69 73 2c 20 61 72 67 75 6d 65 6e 74 43   this, argumentC
37a90 6f 75 6e 74 2c 20 6e 61 6d 65 2c 20 72 65 66 20  ount, name, ref 
37aa0 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  error);..       
37ab0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
37ac0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
37ad0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
37ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
37b20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 45 72 72       #region Err
37b30 6f 72 20 48 61 6e 64 6c 69 6e 67 20 50 72 6f 70  or Handling Prop
37b40 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
37b50 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6c 6f 67  private bool log
37b60 45 72 72 6f 72 73 3b 0d 0a 20 20 20 20 20 20 20  Errors;..       
37b70 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
37b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
37b90 72 6e 73 20 6f 72 20 73 65 74 73 20 61 20 62 6f  rns or sets a bo
37ba0 6f 6c 65 61 6e 20 76 61 6c 75 65 20 69 6e 64 69  olean value indi
37bb0 63 61 74 69 6e 67 20 77 68 65 74 68 65 72 20 76  cating whether v
37bc0 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
37bd0 20 20 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72 73        /// errors
37be0 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65   should be logge
37bf0 64 20 75 73 69 6e 67 20 74 68 65 20 3c 73 65 65  d using the <see
37c00 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67   cref="SQLiteLog
37c10 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
37c20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
37c30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ry>..        pro
37c40 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 62  tected virtual b
37c50 6f 6f 6c 20 4c 6f 67 45 72 72 6f 72 73 4e 6f 54  ool LogErrorsNoT
37c60 68 72 6f 77 0d 0a 20 20 20 20 20 20 20 20 7b 0d  hrow..        {.
37c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
37c80 20 7b 20 72 65 74 75 72 6e 20 6c 6f 67 45 72 72   { return logErr
37c90 6f 72 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ors; }..        
37ca0 20 20 20 20 73 65 74 20 7b 20 6c 6f 67 45 72 72      set { logErr
37cb0 6f 72 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ors = value; }..
37cc0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
37cd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
37ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
37d20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
37d30 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f  bool logExceptio
37d40 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns;..        ///
37d50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
37d60 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Re