System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 865579f9ca109c16ed7193a90c8e9c570e85fa2d:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a  obalization;....
0160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0180: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0190: 74 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72  time.CompilerSer
01a0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01b0: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52  ..using System.R
01c0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01d0: 72 76 69 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53  rvices;..using S
01e0: 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e  ystem.Text;....n
01f0: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0200: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a  Data.SQLite..{..
0210: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
0220: 74 65 43 6f 6e 74 65 78 74 20 48 65 6c 70 65 72  teContext Helper
0230: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
0240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0250: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
0260: 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6e 74 65  presents a conte
0270: 78 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  xt from the SQLi
0280: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
0290: 74 68 61 74 20 63 61 6e 0d 0a 20 20 20 20 2f 2f  that can..    //
02a0: 2f 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 74  / be passed to t
02b0: 68 65 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  he sqlite3_resul
02c0: 74 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69  t_*() and associ
02d0: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  ated functions..
02e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
02f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
0310: 69 74 65 43 6f 6e 74 65 78 74 20 3a 20 49 53 51  iteContext : ISQ
0320: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0330: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0340: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0350: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
0360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0370: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
0380: 74 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e  tive context han
0390: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
03a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
03b0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
03c0: 74 50 74 72 20 70 43 6f 6e 74 65 78 74 3b 0d 0a  tPtr pContext;..
03d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
03e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0430: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0440: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0450: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
0460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
0470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0480: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
04c0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
04d0: 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e 0d 0a  ontext handle...
04e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
04f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0500: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0510: 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
0520: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
0530: 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e 64  ive context hand
0540: 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  le to use...    
0550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0560: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
0570: 61 6c 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74  al SQLiteContext
0580: 28 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74  (IntPtr pContext
0590: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
05a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
05b0: 43 6f 6e 74 65 78 74 20 3d 20 70 43 6f 6e 74 65  Context = pConte
05c0: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  xt;..        }..
05d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
05e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0640: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
0650: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
0660: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
0670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0680: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
0690: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
06a0: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
06b0: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
06c0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
06d0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
06e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
06f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0700: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0710: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
0720: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
0730: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
0740: 7b 20 72 65 74 75 72 6e 20 70 43 6f 6e 74 65 78  { return pContex
0750: 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t; }..        }.
0760: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
0770: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
07d0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
07e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
07f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0810: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0820: 73 75 6c 74 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20  sult to NULL... 
0830: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
0850: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 4e 75  ublic void SetNu
0860: 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ll()..        {.
0870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
0880: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
0890: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
08a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
08b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
08c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
08d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
08e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
08f0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
0900: 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f 6e 74 65 78  ult_null(pContex
0910: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
0920: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
09a0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
09b0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
09c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
09d0: 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
09e0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
09f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0a00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0a20: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0a30: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0a40: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
0a50: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
0a60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
0a70: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0a80: 76 6f 69 64 20 53 65 74 44 6f 75 62 6c 65 28 64  void SetDouble(d
0a90: 6f 75 62 6c 65 20 76 61 6c 75 65 29 0d 0a 20 20  ouble value)..  
0aa0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ab0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
0ac0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
0ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
0ae0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
0af0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
0b00: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
0b10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0b20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
0b30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
0b40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
0b50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
0b60: 6c 65 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  le(pContext, val
0b70: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
0b80: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
0b90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
0ba0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
0bb0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
0bc0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e  ble_interop(pCon
0bd0: 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29  text, ref value)
0be0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
0bf0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0c00: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
0c10: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
0c20: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
0c30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
0c90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ca0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
0cb0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
0cc0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0cd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0ce0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
0cf0: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
0d00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
0d20: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
0d30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
0d40: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
0d50: 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
0d60: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0d70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
0d90: 64 20 53 65 74 49 6e 74 28 69 6e 74 20 76 61 6c  d SetInt(int val
0da0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
0dd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
0de0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0df0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
0e00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
0e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0e20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
0e30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
0e40: 6c 74 5f 69 6e 74 28 70 43 6f 6e 74 65 78 74 2c  lt_int(pContext,
0e50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0e60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0ec0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0ee0: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0ef0: 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63  sult to the spec
0f00: 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
0f10: 22 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20  "Int64" />..    
0f20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
0f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0f50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0f60: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0f70: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0f80: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
0f90: 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
0fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0fb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
0fc0: 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74 36 34  ic void SetInt64
0fd0: 28 6c 6f 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  (long value)..  
0fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ff0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
1000: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1020: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1030: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1040: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
1050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1070: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1080: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1090: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
10a0: 34 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75  4(pContext, valu
10b0: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
10c0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
10d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
10e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
10f0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1100: 34 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65  4_interop(pConte
1110: 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  xt, ref value);.
1120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1130: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
1140: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1150: 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
1160: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1170: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11e0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
11f0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1200: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1210: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1220: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
1230: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1260: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1280: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
1290: 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65 20 74  ring" /> value t
12a0: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 76 61 6c  o use.  This val
12b0: 75 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ue will be..    
12c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65      /// converte
12d0: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
12e0: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
12f0: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
1300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1310: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1320: 69 63 20 76 6f 69 64 20 53 65 74 53 74 72 69 6e  ic void SetStrin
1330: 67 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  g(string value).
1340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1350: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1360: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1370: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
13a0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
13c0: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
13d0: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
13e0: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
13f0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1400: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1410: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1420: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1430: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1440: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
1450: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
1460: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1470: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1480: 65 73 75 6c 74 5f 74 65 78 74 28 0d 0a 20 20 20  esult_text(..   
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
14a0: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
14b0: 74 65 73 2e 4c 65 6e 67 74 68 2c 20 28 49 6e 74  tes.Length, (Int
14c0: 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20 20 20  Ptr)(-1));..    
14d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1550: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1560: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
1570: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
1580: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d 0a 20  f="String" />.. 
1590: 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
15a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 65   containing an e
15b0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
15c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15f0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1600: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1610: 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76  ef="String" /> v
1620: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1630: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
1640: 65 20 74 65 78 74 2e 0d 0a 20 20 20 20 20 20 20  e text...       
1650: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
1660: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
1670: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
1680: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
1690: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20   being..        
16a0: 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
16b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16d0: 76 6f 69 64 20 53 65 74 45 72 72 6f 72 28 73 74  void SetError(st
16e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
16f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1700: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1710: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1730: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1740: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1750: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1760: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1770: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1780: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1790: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
17a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
17c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
17e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
17f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1800: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1810: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1820: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1830: 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  t_error(..      
1840: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
1850: 78 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73  xt, bytes, bytes
1860: 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20  .Length);..     
1870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
18f0: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1900: 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65  esult to the spe
1910: 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1920: 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
1930: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
1940: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
1950: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1960: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1970: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1980: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1990: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22  SQLiteErrorCode"
19b0: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65   /> value to use
19c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19e0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
19f0: 45 72 72 6f 72 43 6f 64 65 28 53 51 4c 69 74 65  ErrorCode(SQLite
1a00: 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1a30: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
1a40: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a50: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1a60: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1a70: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1a90: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1aa0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1ab0: 65 72 72 6f 72 5f 63 6f 64 65 28 70 43 6f 6e 74  error_code(pCont
1ac0: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b50: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1b60: 74 20 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74  t result to cont
1b70: 61 69 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  ain the error co
1b80: 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47  de SQLITE_TOOBIG
1b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bb0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
1bc0: 65 74 45 72 72 6f 72 54 6f 6f 42 69 67 28 29 0d  etErrorTooBig().
1bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1be0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1bf0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1c00: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1c10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1c20: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1c30: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
1c50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c60: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c70: 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70 43 6f 6e  rror_toobig(pCon
1c80: 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  text);..        
1c90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1d10: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1d20: 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  lt to contain th
1d30: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c  e error code SQL
1d40: 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20  ITE_NOMEM...    
1d50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
1d70: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
1d80: 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20  NoMemory()..    
1d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da0: 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20     if (pContext 
1db0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1de0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1df0: 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1e00: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1e10: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1e20: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e30: 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78 74 29 3b  nomem(pContext);
1e40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ec0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1ed0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1ef0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
1f00: 3e 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20  > array..       
1f10: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1f50: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1f60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
1f80: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
1f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1fa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
1fb0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c 6f  blic void SetBlo
1fc0: 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 0d  b(byte[] value).
1fd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1ff0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
2000: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2010: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2020: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2030: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
2040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2050: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2070: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2080: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2090: 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20  "value");....   
20a0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
20b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
20c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
20d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20e0: 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c     pContext, val
20f0: 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  ue, value.Length
2100: 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b  , (IntPtr)(-1));
2110: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2120: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2180: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2190: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
21a0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
21b0: 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73 20  a BLOB of zeros 
21c0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
21d0: 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
21e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2200: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
2210: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2220: 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72 6f  e number of zero
2230: 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66 6f   bytes to use fo
2240: 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74 65  r the BLOB conte
2250: 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  xt result...    
2260: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2270: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2280: 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c 6f   void SetZeroBlo
2290: 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  b(int value)..  
22a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22b0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
22c0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
22d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22e0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
22f0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2300: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
2310: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2320: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2330: 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
2340: 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20 76  blob(pContext, v
2350: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2360: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23d0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
23e0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
23f0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
2400: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
2410: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e 0d  QLiteValue" />..
2420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2440: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2450: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2470: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2480: 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a 20  e" /> to use... 
2490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
24b0: 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75  lic void SetValu
24c0: 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61  e(SQLiteValue va
24d0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
24e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24f0: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
2500: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2510: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2520: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2530: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
2540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2550: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
2560: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2570: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
2580: 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
2590: 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
25a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
25b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
25c0: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
25d0: 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  _value(..       
25e0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
25f0: 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65 48  t, value.NativeH
2600: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2610: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2620: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2630: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2640: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26a0: 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c 70  SQLiteValue Help
26b0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
26c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
26e0: 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 61 6c  represents a val
26f0: 75 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ue from the SQLi
2700: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2710: 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20  that can be..   
2720: 20 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74   /// passed to t
2730: 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  he sqlite3_value
2740: 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69 61  _*() and associa
2750: 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  ted functions...
2760: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2770: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2780: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2790: 74 65 56 61 6c 75 65 20 3a 20 49 53 51 4c 69 74  teValue : ISQLit
27a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20  eNativeHandle.. 
27b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27c0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
27d0: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
27e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2800: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d  e value handle..
2810: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2820: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2830: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2840: 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  pValue;..       
2850: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2860: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28c0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
28d0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
28e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28f0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2900: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2910: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
2920: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2930: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
2940: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 68 61      /// value ha
2950: 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndle...        /
2960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2980: 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
2990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29a0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
29b0: 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20  andle to use... 
29c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
29e0: 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
29f0: 28 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 0d  (IntPtr pValue).
2a00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 56 61          this.pVa
2a20: 6c 75 65 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20  lue = pValue;.. 
2a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2ab0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2ac0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2ad0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae0: 20 20 20 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74     /// Invalidat
2af0: 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  es the native va
2b00: 6c 75 65 20 68 61 6e 64 6c 65 2c 20 74 68 65 72  lue handle, ther
2b10: 65 62 79 20 70 72 65 76 65 6e 74 69 6e 67 20 66  eby preventing f
2b20: 75 72 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  urther..        
2b30: 2f 2f 2f 20 61 63 63 65 73 73 20 74 6f 20 69 74  /// access to it
2b40: 20 66 72 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63   from this objec
2b50: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b80: 76 61 74 65 20 76 6f 69 64 20 50 72 65 76 65 6e  vate void Preven
2b90: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 0d  tNativeAccess().
2ba0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2bb0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 20 3d          pValue =
2bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2be0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2bf0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c50: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
2c60: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
2c70: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c90: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2ca0: 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
2cb0: 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
2cc0: 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75 63  ite3_value struc
2cd0: 74 75 72 65 20 69 6e 74 6f 0d 0a 20 20 20 20 20  ture into..     
2ce0: 20 20 20 2f 2f 2f 20 61 20 6d 61 6e 61 67 65 64     /// a managed
2cf0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2d00: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
2d10: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2d40: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2d50: 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
2d60: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
2d70: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74  pointer to a nat
2d80: 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ive sqlite3_valu
2d90: 65 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 63  e structure to c
2da0: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
2db0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2dc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
2de0: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 3c 73  / The managed <s
2df0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
2e00: 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  alue" /> object 
2e10: 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
2e20: 20 75 70 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f   upon..        /
2e30: 2f 2f 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  // failure...   
2e40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2e50: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
2e60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53 51 4c  ernal static SQL
2e70: 69 74 65 56 61 6c 75 65 20 46 72 6f 6d 49 6e 74  iteValue FromInt
2e80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2e90: 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d    IntPtr pValue.
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2eb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ec0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
2ed0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2ee0: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f00: 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c  rn new SQLiteVal
2f10: 75 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  ue(pValue);..   
2f20: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2fa0: 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
2fb0: 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
2fc0: 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e  ve pointers to n
2fd0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61  ative sqlite3_va
2fe0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
2ff0: 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 74 6f   structures into
3000: 20 61 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79   a managed array
3010: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
3020: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 0d 0a  QLiteValue" />..
3030: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
3040: 63 74 20 69 6e 73 74 61 6e 63 65 73 2e 0d 0a 20  ct instances... 
3050: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3060: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3080: 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
3090: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
30a0: 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68  f elements in th
30b0: 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
30c0: 6f 66 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  of native sqlite
30d0: 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  3_value..       
30e0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 2e   /// structures.
30f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3100: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
3110: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3120: 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
3130: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
3140: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
3150: 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
3160: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
3170: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  alue..        //
3180: 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f 20  / structures to 
3190: 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
31a0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
31b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
31c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
31d0: 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61  // The managed a
31e0: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
31f0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
3200: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
3210: 63 65 73 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ces or..        
3220: 2f 2f 2f 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61  /// null upon fa
3230: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
3240: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3250: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
3260: 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 56 61   static SQLiteVa
3270: 6c 75 65 5b 5d 20 41 72 72 61 79 46 72 6f 6d 53  lue[] ArrayFromS
3280: 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20  izeAndIntPtr(.. 
3290: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
32a0: 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
32b0: 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
32c0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32e0: 20 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20       if (argc < 
32f0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
3300: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3310: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3320: 69 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50  if (argv == IntP
3330: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
3340: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3350: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3360: 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
3370: 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  e[] result = new
3380: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 61 72 67   SQLiteValue[arg
3390: 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c];....         
33a0: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
33b0: 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d 20  x = 0, offset = 
33c0: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
33d0: 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c 20          index < 
33e0: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d 0a  result.Length;..
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66 66      index++, off
3410: 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69  set += IntPtr.Si
3420: 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze)..           
3430: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3440: 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67 20      IntPtr pArg 
3450: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
3460: 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76 2c  ReadIntPtr(argv,
3470: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3490: 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70 41  ult[index] = (pA
34a0: 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rg != IntPtr.Zer
34b0: 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  o) ?..          
34c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
34d0: 4c 69 74 65 56 61 6c 75 65 28 70 41 72 67 29 20  LiteValue(pArg) 
34e0: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
34f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3500: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
3510: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
3520: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
3530: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
3540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3590: 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
35a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
35b0: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
35c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
35d0: 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
35e0: 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
35f0: 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
3600: 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
3610: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
3620: 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
3630: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
3640: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3650: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3660: 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
3670: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
3680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
3690: 20 7b 20 72 65 74 75 72 6e 20 70 56 61 6c 75 65   { return pValue
36a0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
36b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
36c0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
36d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3710: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3720: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
3730: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
3740: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
3750: 20 70 65 72 73 69 73 74 65 64 3b 0d 0a 20 20 20   persisted;..   
3760: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3770: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3780: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
3790: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
37a0: 51 4c 69 74 65 20 76 61 6c 75 65 20 68 61 73 20  QLite value has 
37b0: 62 65 65 6e 20 73 75 63 63 65 73 73 66 75 6c 6c  been successfull
37c0: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
37d0: 65 72 73 69 73 74 65 64 20 61 73 20 61 20 6d 61  ersisted as a ma
37e0: 6e 61 67 65 64 20 76 61 6c 75 65 20 77 69 74 68  naged value with
37f0: 69 6e 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  in this object i
3800: 6e 73 74 61 6e 63 65 20 28 69 2e 65 2e 20 74 68  nstance (i.e. th
3810: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
3820: 73 65 65 20 63 72 65 66 3d 22 56 61 6c 75 65 22  see cref="Value"
3830: 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 6d 61 79   /> property may
3840: 20 74 68 65 6e 20 62 65 20 72 65 61 64 20 73 75   then be read su
3850: 63 63 65 73 73 66 75 6c 6c 79 29 2e 0d 0a 20 20  ccessfully)...  
3860: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3870: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3880: 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 73 69 73  blic bool Persis
3890: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ted..        {..
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
38b0: 7b 20 72 65 74 75 72 6e 20 70 65 72 73 69 73 74  { return persist
38c0: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ed; }..        }
38d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
3930: 72 69 76 61 74 65 20 6f 62 6a 65 63 74 20 76 61  rivate object va
3940: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue;..        //
3950: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3960: 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
3970: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 66 6f  managed value fo
3980: 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  r this object in
3990: 73 74 61 6e 63 65 20 69 73 20 61 76 61 69 6c 61  stance is availa
39a0: 62 6c 65 20 28 69 2e 65 2e 20 69 74 0d 0a 20 20  ble (i.e. it..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 62 65        /// has be
39c0: 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 70 65  en previously pe
39d0: 72 73 69 73 74 65 64 20 76 69 61 20 74 68 65 20  rsisted via the 
39e0: 3c 73 65 65 20 63 72 65 66 3d 22 50 65 72 73 69  <see cref="Persi
39f0: 73 74 22 20 2f 3e 29 20 6d 65 74 68 6f 64 2c 0d  st" />) method,.
3a00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
3a10: 74 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  t value is retur
3a20: 6e 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ned; otherwise, 
3a30: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20  an exception is 
3a40: 74 68 72 6f 77 6e 2e 20 20 54 68 65 0d 0a 20 20  thrown.  The..  
3a50: 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
3a60: 65 64 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  ed value may be 
3a70: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
3a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3a90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
3aa0: 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20  ject Value..    
3ab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ac0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3ad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ae0: 20 20 20 20 20 20 20 69 66 20 28 21 70 65 72 73         if (!pers
3af0: 69 73 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20  isted)..        
3b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3b20: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
3b30: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
3b40: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61               "va
3b60: 6c 75 65 20 77 61 73 20 6e 6f 74 20 70 65 72 73  lue was not pers
3b70: 69 73 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  isted");..      
3b80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3ba0: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
3bb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3bc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3bd0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3be0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3c30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3c40: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
3c50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3c60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3c70: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3c80: 75 72 6e 73 20 74 68 65 20 74 79 70 65 20 61 66  urns the type af
3c90: 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74 65  finity associate
3ca0: 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75  d with this valu
3cb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
3cc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3cd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
3ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
3cf0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
3d00: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3d10: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
3d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3d30: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3d40: 62 6c 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  blic TypeAffinit
3d50: 79 20 47 65 74 54 79 70 65 41 66 66 69 6e 69 74  y GetTypeAffinit
3d60: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  y()..        {..
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d80: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
3d90: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 54 79  .Zero) return Ty
3da0: 70 65 41 66 66 69 6e 69 74 79 2e 4e 6f 6e 65 3b  peAffinity.None;
3db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3dc0: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
3dd0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
3de0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 70 56 61 6c  _value_type(pVal
3df0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3e00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3e60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3e70: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3e80: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  d returns the nu
3e90: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 73  mber of bytes as
3ea0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
3eb0: 69 73 20 76 61 6c 75 65 2c 20 69 66 0d 0a 20 20  is value, if..  
3ec0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 72 65 66        /// it ref
3ed0: 65 72 73 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ers to a UTF-8 e
3ee0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 0d 0a  ncoded string...
3ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
3f00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3f10: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3f20: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
3f30: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61  umber of bytes a
3f40: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
3f50: 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65 20  his value.  The 
3f60: 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 0d 0a  returned value..
3f70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
3f80: 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  be zero...      
3f90: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
3fa0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3fb0: 20 69 6e 74 20 47 65 74 42 79 74 65 73 28 29 0d   int GetBytes().
3fc0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3fd0: 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
3fe0: 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
3ff0: 6f 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20  o) return 0;..  
4000: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4010: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
4020: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
4030: 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65 29  ue_bytes(pValue)
4040: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4050: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
40a0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
40b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
40c0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
40d0: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
40e0: 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
40f0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4100: 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
4110: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
4120: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4130: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
4140: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4150: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
4160: 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 61 73  ef="Int32" /> as
4170: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4180: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
4190: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
41a0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
41b0: 63 20 69 6e 74 20 47 65 74 49 6e 74 28 29 0d 0a  c int GetInt()..
41c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
41d0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
41e0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
41f0: 29 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74  ) return default
4200: 28 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  (int);..        
4210: 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
4220: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4230: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
4240: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
4250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
42b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
42c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
42d0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
42e0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
42f0: 74 36 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74  t64" /> associat
4300: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
4310: 20 2f 2f 2f 20 74 68 69 73 20 76 61 6c 75 65 2e   /// this value.
4320: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4330: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4340: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4350: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
4360: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
4370: 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  4" /> associated
4380: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
4390: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
43a0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
43b0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 47     public long G
43c0: 65 74 49 6e 74 36 34 28 29 0d 0a 20 20 20 20 20  etInt64()..     
43d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
43e0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
43f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4400: 75 72 6e 20 64 65 66 61 75 6c 74 28 6c 6f 6e 67  urn default(long
4410: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4420: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4430: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4440: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4450: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4460: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
4470: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66  (pValue);..#elif
4480: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
4490: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  D..            l
44a0: 6f 6e 67 20 76 61 6c 75 65 20 3d 20 30 3b 0d 0a  ong value = 0;..
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
44c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
44d0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
44e0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c  t64_interop(pVal
44f0: 75 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  ue, ref value);.
4500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4510: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73  urn value;..#els
4520: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e..            t
4530: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
4540: 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
4550: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
4560: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4570: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
45c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
45d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
45e0: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
45f0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
4600: 44 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63  Double" /> assoc
4610: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
4620: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
4630: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
4640: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4650: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4660: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
4670: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
4680: 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69  ouble" /> associ
4690: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
46a0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
46b0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
46c0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
46d0: 75 62 6c 65 20 47 65 74 44 6f 75 62 6c 65 28 29  uble GetDouble()
46e0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
46f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4700: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4710: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4720: 6c 74 28 64 6f 75 62 6c 65 29 3b 0d 0a 0d 0a 23  lt(double);....#
4730: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4740: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
4750: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4760: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
4770: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4780: 6c 75 65 5f 64 6f 75 62 6c 65 28 70 56 61 6c 75  lue_double(pValu
4790: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
47a0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47b0: 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
47c0: 76 61 6c 75 65 20 3d 20 30 2e 30 3b 0d 0a 20 20  value = 0.0;..  
47d0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
47e0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
47f0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
4800: 6c 65 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c 75  le_interop(pValu
4810: 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a  e, ref value);..
4820: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4830: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73 65  rn value;..#else
4840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4850: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
4860: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
4870: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
4880: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4890: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
48e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
48f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4900: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4910: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
4920: 74 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69  tring" /> associ
4930: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
4940: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
4950: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
4960: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4970: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4980: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
4990: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
49a0: 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69 61  ring" /> associa
49b0: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
49c0: 6c 75 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20  lue.  The value 
49d0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
49e0: 63 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 20 74  converted from t
49f0: 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
4a00: 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69 6e 67  g prior to being
4a10: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4a20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4a30: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
4a40: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72  ic string GetStr
4a50: 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
4a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4a70: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4a80: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4a90: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4aa0: 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 3b       int length;
4ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
4ac0: 74 50 74 72 20 70 53 74 72 69 6e 67 3b 0d 0a 0d  tPtr pString;...
4ad0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
4ae0: 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
4af0: 20 20 6c 65 6e 67 74 68 20 3d 20 55 6e 73 61 66    length = Unsaf
4b00: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4b10: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
4b20: 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  es(pValue);..   
4b30: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
4b40: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
4b50: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
4b60: 61 6c 75 65 5f 74 65 78 74 28 70 56 61 6c 75 65  alue_text(pValue
4b70: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
4b80: 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20         length = 
4b90: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
4ba0: 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61    pString = Unsa
4bb0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
4bc0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
4bd0: 78 74 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  xt_interop(..   
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61               pVa
4bf0: 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68 29  lue, ref length)
4c00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
4c10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4c20: 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
4c30: 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
4c40: 72 28 70 53 74 72 69 6e 67 2c 20 6c 65 6e 67 74  r(pString, lengt
4c50: 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  h);..        }..
4c60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
4cc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4cd0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64      /// Gets and
4ce0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
4cf0: 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e  e cref="Byte" />
4d00: 20 61 72 72 61 79 20 61 73 73 6f 63 69 61 74 65   array associate
4d10: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
4d20: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
4d30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
4d40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4d50: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4d60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
4d70: 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74 65 22  <see cref="Byte"
4d80: 20 2f 3e 20 61 72 72 61 79 20 61 73 73 6f 63 69   /> array associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
4da0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
4db0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4dc0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
4dd0: 74 65 5b 5d 20 47 65 74 42 6c 6f 62 28 29 0d 0a  te[] GetBlob()..
4de0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4df0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
4e00: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
4e10: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
4e30: 74 75 72 6e 20 53 51 4c 69 74 65 42 79 74 65 73  turn SQLiteBytes
4e40: 2e 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  .FromIntPtr(..  
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
4e60: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4e70: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4e80: 62 6c 6f 62 28 70 56 61 6c 75 65 29 2c 20 47 65  blob(pValue), Ge
4e90: 74 42 79 74 65 73 28 29 29 3b 0d 0a 20 20 20 20  tBytes());..    
4ea0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4eb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ef0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4f00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4f10: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4f20: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4f30: 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62  an <see cref="Ob
4f40: 6a 65 63 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63  ject" /> instanc
4f50: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
4f60: 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
4f70: 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  his value...    
4f80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4fa0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4fb0: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4fc0: 63 72 65 66 3d 22 4f 62 6a 65 63 74 22 20 2f 3e  cref="Object" />
4fd0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4fe0: 20 74 68 69 73 20 76 61 6c 75 65 2e 20 20 49 66   this value.  If
4ff0: 20 74 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   the type..     
5000: 20 20 20 2f 2f 2f 20 61 66 66 69 6e 69 74 79 20     /// affinity 
5010: 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73  of the object is
5020: 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 63 61 6e 6e   unknown or cann
5030: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
5040: 2c 20 61 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  , a null..      
5050: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c    /// value will
5060: 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20   be returned... 
5070: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
5080: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
5090: 75 62 6c 69 63 20 6f 62 6a 65 63 74 20 47 65 74  ublic object Get
50a0: 4f 62 6a 65 63 74 28 29 0d 0a 20 20 20 20 20 20  Object()..      
50b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
50c0: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
50d0: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
50e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
50f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5100: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5110: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5130: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5150: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
5160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5180: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5190: 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20  ity.Int64:..    
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
51c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
51d0: 6e 20 47 65 74 49 6e 74 36 34 28 29 3b 0d 0a 20  n GetInt64();.. 
51e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5200: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
5210: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 3a 0d  ffinity.Double:.
5220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5230: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5250: 72 65 74 75 72 6e 20 47 65 74 44 6f 75 62 6c 65  return GetDouble
5260: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
5270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5280: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5290: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
52a0: 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt:..           
52b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
52c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52d0: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 74      return GetSt
52e0: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
52f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5320: 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20 20 20  y.Blob:..       
5330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
5360: 65 74 42 79 74 65 73 28 29 3b 0d 0a 20 20 20 20  etBytes();..    
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
5390: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
53a0: 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a 20 20 20 20  nity.Null:..    
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
53d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
53e0: 6e 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d  n DBNull.Value;.
53f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5400: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
5410: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
5420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5430: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5470: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5480: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
5490: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
54f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5500: 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74 68 65      /// Uses the
5510: 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68 61   native value ha
5520: 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61  ndle to obtain a
5530: 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d 61 6e  nd store the man
5540: 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20  aged value..    
5550: 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69 73      /// for this
5560: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
5570: 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20 69 74  , thus saving it
5580: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 2e 20   for later use. 
5590: 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   The type..     
55a0: 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d 61     /// of the ma
55b0: 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73 20 64  naged value is d
55c0: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
55d0: 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 6f   type affinity o
55e0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
55f0: 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75 65 2e  // native value.
5600: 20 20 49 66 20 74 68 65 20 74 79 70 65 20 61 66    If the type af
5610: 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20 72 65  finity is not re
5620: 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73  cognized by this
5630: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
5640: 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69 73  thod, no work is
5650: 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65 20   done and false 
5660: 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  is returned...  
5670: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5680: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5690: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
56a0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
56b0: 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
56c0: 76 61 6c 75 65 20 77 61 73 20 70 65 72 73 69 73  value was persis
56d0: 74 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ted successfully
56e0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
56f0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
5700: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50     public bool P
5710: 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20 20 20  ersist()..      
5720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5730: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
5740: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
5750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5760: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5770: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5780: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
57c0: 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ue = null;..    
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57e0: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
57f0: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
5800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5810: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
5820: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5840: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5850: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
5860: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a 0d  Affinity.Int64:.
5870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5880: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74 36 34  value = GetInt64
58b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
58d0: 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73  ventNativeAccess
58e0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5900: 75 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d  urn (persisted =
5910: 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20   true);..       
5920: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5940: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5950: 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20  y.Double:..     
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5980: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5990: 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d 0a  = GetDouble();..
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e          PreventN
59c0: 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a  ativeAccess();..
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
59f0: 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65  persisted = true
5a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5a10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5a20: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5a30: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
5a40: 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
5a50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a70: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 53 74     value = GetSt
5a80: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5aa0: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
5ab0: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
5ae0: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5b10: 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66      case TypeAff
5b20: 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20  inity.Blob:..   
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
5b60: 65 20 3d 20 47 65 74 42 79 74 65 73 28 29 3b 0d  e = GetBytes();.
5b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5b80: 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74           Prevent
5b90: 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d  NativeAccess();.
5ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5bb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5bc0: 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75  (persisted = tru
5bd0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
5be0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5c00: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
5c10: 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll:..           
5c20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c40: 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42 4e 75      value = DBNu
5c50: 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ll.Value;..     
5c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c70: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
5c80: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
5c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ca0: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
5cb0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
5cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5ce0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5d20: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
5d50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
5d60: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
5d70: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
5d80: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
5d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
5de0: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
5df0: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
5e00: 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a  Op Enumeration..
5e10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5e20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65  >..    /// These
5e30: 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64   are the allowed
5e40: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
5e50: 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74 20 61  operators that a
5e60: 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a 20 20  re part of a..  
5e70: 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74    /// constraint
5e80: 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45   term in the WHE
5e90: 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61 20 71  RE clause of a q
5ea0: 75 65 72 79 20 74 68 61 74 20 75 73 65 73 20 61  uery that uses a
5eb0: 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f   virtual..    //
5ec0: 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  / table...    //
5ed0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5ee0: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
5ef0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5f00: 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20 20  intOp : byte..  
5f10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
5f20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5f30: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
5f40: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
5f50: 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61  e equality opera
5f60: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5f70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5f80: 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20 3d 20        EqualTo = 
5f90: 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  2,....        //
5fa0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5fb0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5fc0: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5fd0: 68 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  he greater than 
5fe0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5ff0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6000: 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61 74  >..        Great
6010: 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a 20  erThan = 4,.... 
6020: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6030: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6040: 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
6050: 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73  resents the less
6060: 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
6070: 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  o operator...   
6080: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6090: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73  ry>..        Les
60a0: 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d  sThanOrEqualTo =
60b0: 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   8,....        /
60c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
60d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
60e0: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
60f0: 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 70  the less than op
6100: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
6110: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6120: 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54 68 61  .        LessTha
6130: 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20  n = 16,....     
6140: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6150: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
6160: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
6170: 6e 74 73 20 74 68 65 20 67 72 65 61 74 65 72 20  nts the greater 
6180: 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
6190: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
61a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
61b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61  y>..        Grea
61c0: 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f  terThanOrEqualTo
61d0: 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 32,....      
61e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
61f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
6200: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
6210: 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  ts the MATCH ope
6220: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
6230: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6240: 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 3d 20          Match = 
6250: 36 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  64,....        /
6260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6270: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
6280: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
6290: 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  the LIKE operato
62a0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
62b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
62c0: 20 20 20 20 4c 69 6b 65 20 3d 20 36 35 2c 0d 0a      Like = 65,..
62d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
62e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
62f0: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
6300: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 47  represents the G
6310: 4c 4f 42 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  LOB operator... 
6320: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6330: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47  mary>..        G
6340: 6c 6f 62 20 3d 20 36 36 2c 0d 0a 0d 0a 20 20 20  lob = 66,....   
6350: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6360: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6370: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
6380: 73 65 6e 74 73 20 74 68 65 20 52 45 47 45 58 50  sents the REGEXP
6390: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
63a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
63b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 52 65 67 65  y>..        Rege
63c0: 78 70 20 3d 20 36 37 2c 0d 0a 0d 0a 20 20 20 20  xp = 67,....    
63d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
63e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
63f0: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
6400: 65 6e 74 73 20 74 68 65 20 69 6e 65 71 75 61 6c  ents the inequal
6410: 69 74 79 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  ity operator... 
6420: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6430: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e  mary>..        N
6440: 6f 74 45 71 75 61 6c 54 6f 20 3d 20 36 38 2c 0d  otEqualTo = 68,.
6450: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6460: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6470: 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
6480: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
6490: 49 53 20 4e 4f 54 20 6f 70 65 72 61 74 6f 72 2e  IS NOT operator.
64a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
64b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
64c0: 20 20 49 73 4e 6f 74 20 3d 20 36 39 2c 0d 0a 0d    IsNot = 69,...
64d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
64e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
64f0: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
6500: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 49 53  epresents the IS
6510: 20 4e 4f 54 20 4e 55 4c 4c 20 6f 70 65 72 61 74   NOT NULL operat
6520: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
6530: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6540: 20 20 20 20 20 49 73 4e 6f 74 4e 75 6c 6c 20 3d       IsNotNull =
6550: 20 37 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   70,....        
6560: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6570: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
6580: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
6590: 20 74 68 65 20 49 53 20 4e 55 4c 4c 20 6f 70 65   the IS NULL ope
65a0: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
65b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
65c0: 20 20 20 20 20 20 20 20 49 73 4e 75 6c 6c 20 3d          IsNull =
65d0: 20 37 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   71,....        
65e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
65f0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
6600: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
6610: 20 74 68 65 20 49 53 20 6f 70 65 72 61 74 6f 72   the IS operator
6620: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6630: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6640: 20 20 20 49 73 20 3d 20 37 32 0d 0a 20 20 20 20     Is = 72..    
6650: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
6660: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
66c0: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 46  ion SQLiteIndexF
66d0: 6c 61 67 73 20 45 6e 75 6d 65 72 61 74 69 6f 6e  lags Enumeration
66e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
66f0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
6700: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
6710: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
6720: 65 20 69 6e 64 65 78 20 66 6c 61 67 73 20 66 72  e index flags fr
6730: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  om the..    /// 
6740: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
6750: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
6760: 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
6770: 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  thod...    /// <
6780: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
6790: 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20 20 70 75  Flags()]..    pu
67a0: 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
67b0: 49 6e 64 65 78 46 6c 61 67 73 0d 0a 20 20 20 20  IndexFlags..    
67c0: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
67d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
67e0: 20 20 2f 2f 2f 20 4e 6f 20 73 70 65 63 69 61 6c    /// No special
67f0: 20 68 61 6e 64 6c 69 6e 67 2e 20 20 54 68 69 73   handling.  This
6800: 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2e   is the default.
6810: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6820: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6830: 20 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 0d    None = 0x0,...
6840: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6850: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6860: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 69  /// This value i
6870: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68  ndicates that th
6880: 65 20 73 63 61 6e 20 6f 66 20 74 68 65 20 69 6e  e scan of the in
6890: 64 65 78 20 77 69 6c 6c 20 76 69 73 69 74 20 61  dex will visit a
68a0: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  t..        /// m
68b0: 6f 73 74 20 6f 6e 65 20 72 6f 77 2e 0d 0a 20 20  ost one row...  
68c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
68d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 53 63  ary>..        Sc
68e0: 61 6e 55 6e 69 71 75 65 20 3d 20 30 78 31 0d 0a  anUnique = 0x1..
68f0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
6900: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6950: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
6960: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
6970: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 48 65  dexConstraint He
6980: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
6990: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
69a0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
69b0: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
69c0: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
69d0: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
69e0: 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20   structure..    
69f0: 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  /// from the SQL
6a00: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
6a10: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6a20: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
6a30: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
6a40: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
6a50: 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
6a60: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
6a70: 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f  ernal Constructo
6a80: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
6a90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6aa0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
6ab0: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
6ac0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
6ad0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
6ae0: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
6af0: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  /// sqlite3_inde
6b00: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72  x_constraint str
6b10: 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
6b20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
6b40: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72  ram name="constr
6b50: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
6b60: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73  /// The native s
6b70: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
6b80: 73 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72  straint structur
6b90: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
6ba0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6bb0: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
6bc0: 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  l SQLiteIndexCon
6bd0: 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
6be0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
6bf0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
6c00: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
6c10: 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  nt constraint.. 
6c20: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
6c30: 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
6c40: 28 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c  (constraint.iCol
6c50: 75 6d 6e 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e  umn, constraint.
6c60: 6f 70 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75  op, constraint.u
6c70: 73 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  sable,..        
6c80: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
6c90: 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65  raint.iTermOffse
6ca0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
6cb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
6cc0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
6cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
6ce0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
6cf0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
6d40: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
6d50: 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f  ivate Constructo
6d60: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
6d70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6d80: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
6d90: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
6da0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
6db0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
6dc0: 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  field..        /
6dd0: 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  // values...    
6de0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6df0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6e00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f  <param name="iCo
6e10: 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  lumn">..        
6e20: 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65  /// Column on le
6e30: 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ft-hand side of 
6e40: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
6e50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6e60: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6e70: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 22 3e  param name="op">
6e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6e90: 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f  nstraint operato
6ea0: 72 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53 51  r (<see cref="SQ
6eb0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
6ec0: 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20  intOp" />)...   
6ed0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6ef0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 75 73 61 62  param name="usab
6f00: 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
6f10: 2f 20 54 72 75 65 20 69 66 20 74 68 69 73 20 63  / True if this c
6f20: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73 61  onstraint is usa
6f30: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
6f40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6f50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6f60: 61 6d 65 3d 22 69 54 65 72 6d 4f 66 66 73 65 74  ame="iTermOffset
6f70: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
6f80: 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
6f90: 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  - <see cref="ISQ
6fa0: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
6fb0: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
6fc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f  .        /// sho
6fd0: 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20  uld ignore...   
6fe0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6ff0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
7000: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  te SQLiteIndexCo
7010: 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
7020: 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75         int iColu
7030: 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn,..           
7040: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
7050: 74 72 61 69 6e 74 4f 70 20 6f 70 2c 0d 0a 20 20  traintOp op,..  
7060: 20 20 20 20 20 20 20 20 20 20 62 79 74 65 20 75            byte u
7070: 73 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  sable,..        
7080: 20 20 20 20 69 6e 74 20 69 54 65 72 6d 4f 66 66      int iTermOff
7090: 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
70a0: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
70b0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
70c0: 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d  iColumn = iColum
70d0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
70e0: 74 68 69 73 2e 6f 70 20 3d 20 6f 70 3b 0d 0a 20  this.op = op;.. 
70f0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
7100: 75 73 61 62 6c 65 20 3d 20 75 73 61 62 6c 65 3b  usable = usable;
7110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
7120: 69 73 2e 69 54 65 72 6d 4f 66 66 73 65 74 20 3d  is.iTermOffset =
7130: 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
7140: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7150: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7160: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
71b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
71c0: 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d  n Public Fields.
71d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
71e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
71f0: 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65  /// Column on le
7200: 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ft-hand side of 
7210: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
7220: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7230: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
7240: 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
7250: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
72b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
72c0: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61       /// Constra
72d0: 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73  int operator (<s
72e0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
72f0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
7300: 22 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20  " />)...        
7310: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7320: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
7330: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7340: 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 0d 0a 20 20  aintOp op;....  
7350: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
73a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
73b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
73c0: 2f 2f 20 54 72 75 65 20 69 66 20 74 68 69 73 20  // True if this 
73d0: 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73  constraint is us
73e0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
73f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7400: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
7410: 74 65 20 75 73 61 62 6c 65 3b 0d 0a 0d 0a 20 20  te usable;....  
7420: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7470: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7480: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7490: 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c  // Used internal
74a0: 6c 79 20 2d 20 3c 73 65 65 20 63 72 65 66 3d 22  ly - <see cref="
74b0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
74c0: 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
74d0: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
74e0: 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a  should ignore...
74f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7510: 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d  public int iTerm
7520: 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
7530: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
7540: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
7550: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
7560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
75b0: 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78  gion SQLiteIndex
75c0: 4f 72 64 65 72 42 79 20 48 65 6c 70 65 72 20 43  OrderBy Helper C
75d0: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
75e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
75f0: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
7600: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76  esents the nativ
7610: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
7620: 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72  orderby structur
7630: 65 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20  e from..    /// 
7640: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
7650: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
7660: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7670: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
7680: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
7690: 78 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 7b 0d  xOrderBy..    {.
76a0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
76b0: 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72   Internal Constr
76c0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
76d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
76e0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
76f0: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
7700: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
7710: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
7720: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
7730: 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
7740: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74  index_orderby st
7750: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
7760: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7770: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
7780: 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 72 64 65 72  aram name="order
7790: 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  By">..        //
77a0: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c  / The native sql
77b0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
77c0: 62 79 20 73 74 72 75 63 74 75 72 65 20 74 6f 20  by structure to 
77d0: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
77e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
77f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
7800: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28  iteIndexOrderBy(
7810: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
7820: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7830: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
7840: 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42 79 0d  orderby orderBy.
7850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
7860: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
7870: 69 73 28 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75  is(orderBy.iColu
7880: 6d 6e 2c 20 6f 72 64 65 72 42 79 2e 64 65 73 63  mn, orderBy.desc
7890: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
78a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
78b0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
78c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
78d0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
78e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7930: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
7940: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
7950: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
7960: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7970: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
7980: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
7990: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
79a0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
79b0: 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ield..        //
79c0: 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  / values...     
79d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
79e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
79f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c  param name="iCol
7a00: 75 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  umn">..        /
7a10: 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72  // Column number
7a20: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7a30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
7a40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7a50: 3d 22 64 65 73 63 22 3e 0d 0a 20 20 20 20 20 20  ="desc">..      
7a60: 20 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20 44    /// True for D
7a70: 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20  ESC.  False for 
7a80: 41 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ASC...        //
7a90: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7aa0: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
7ab0: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 0d  teIndexOrderBy(.
7ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
7ad0: 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20   iColumn,..     
7ae0: 20 20 20 20 20 20 20 62 79 74 65 20 64 65 73 63         byte desc
7af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
7b00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
7b10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f          this.iCo
7b20: 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d  lumn = iColumn;.
7b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
7b40: 73 2e 64 65 73 63 20 3d 20 64 65 73 63 3b 0d 0a  s.desc = desc;..
7b50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7b60: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7b70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7bc0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
7bd0: 6f 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73  on Public Fields
7be0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7bf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7c00: 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62   /// Column numb
7c10: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
7c20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7c30: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
7c40: 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20  iColumn;....    
7c50: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7ca0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7cb0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7cc0: 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
7cd0: 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d   False for ASC..
7ce0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
7cf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7d00: 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
7d10: 63 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  c;..        #end
7d20: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
7d30: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7d40: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d90: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
7da0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
7db0: 72 61 69 6e 74 55 73 61 67 65 20 48 65 6c 70 65  raintUsage Helpe
7dc0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
7dd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7de0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
7df0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61  epresents the na
7e00: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
7e10: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
7e20: 61 67 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72  age..    /// str
7e30: 75 63 74 75 72 65 20 66 72 6f 6d 20 74 68 65 20  ucture from the 
7e40: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
7e50: 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
7e60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
7e70: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
7e80: 73 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  s SQLiteIndexCon
7e90: 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
7ea0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
7eb0: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
7ec0: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
7ed0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
7ef0: 6f 6e 73 74 72 75 63 74 73 20 61 20 64 65 66 61  onstructs a defa
7f00: 75 6c 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  ult instance of 
7f10: 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
7f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ry>..        int
7f40: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
7f50: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
7f60: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
7f70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
7f80: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
7f90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fe0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7ff0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
8010: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
8020: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
8030: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
8040: 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20  ified native..  
8050: 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
8060: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
8070: 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74 75  nt_usage structu
8080: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
8090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
80a0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
80b0: 6e 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74  name="constraint
80c0: 55 73 61 67 65 22 3e 0d 0a 20 20 20 20 20 20 20  Usage">..       
80d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
80e0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
80f0: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73  nstraint_usage s
8100: 74 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e  tructure to use.
8110: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8120: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
8130: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
8140: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
8150: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
8160: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
8170: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
8180: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
8190: 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
81a0: 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sage..          
81b0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
81c0: 20 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69   : this(constrai
81d0: 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65  ntUsage.argvInde
81e0: 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  x, constraintUsa
81f0: 67 65 2e 6f 6d 69 74 29 0d 0a 20 20 20 20 20 20  ge.omit)..      
8200: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8210: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
8220: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8230: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8240: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8290: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
82a0: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
82b0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
82c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
82d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
82e0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
82f0: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
8300: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
8310: 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20  ified field..   
8320: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e       /// values.
8330: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8350: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8360: 65 3d 22 61 72 67 76 49 6e 64 65 78 22 3e 0d 0a  e="argvIndex">..
8370: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67          /// If g
8380: 72 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63  reater than 0, c
8390: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
83a0: 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
83b0: 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lter...        /
83c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
83d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
83e0: 6e 61 6d 65 3d 22 6f 6d 69 74 22 3e 0d 0a 20 20  name="omit">..  
83f0: 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74        /// Do not
8400: 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72   code a test for
8410: 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
8420: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8430: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
8440: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
8450: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
8460: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
8470: 20 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 2c    int argvIndex,
8480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
8490: 74 65 20 6f 6d 69 74 0d 0a 20 20 20 20 20 20 20  te omit..       
84a0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
84b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
84c0: 68 69 73 2e 61 72 67 76 49 6e 64 65 78 20 3d 20  his.argvIndex = 
84d0: 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20  argvIndex;..    
84e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 6d 69          this.omi
84f0: 74 20 3d 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  t = omit;..     
8500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8510: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
8520: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8570: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
8580: 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20  ublic Fields..  
8590: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
85a0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
85b0: 20 49 66 20 67 72 65 61 74 65 72 20 74 68 61 6e   If greater than
85c0: 20 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69   0, constraint i
85d0: 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
85e0: 6f 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20  o xFilter...    
85f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8600: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8610: 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78  ic int argvIndex
8620: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8670: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8680: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8690: 20 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f         /// Do no
86a0: 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
86b0: 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
86c0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
86d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
86e0: 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
86f0: 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 23  omit;..        #
8700: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
8710: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
8720: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
8730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8770: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
8780: 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e  on SQLiteIndexIn
8790: 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61 73  puts Helper Clas
87a0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
87b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
87c0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
87d0: 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20  nts the various 
87e0: 69 6e 70 75 74 73 20 70 72 6f 76 69 64 65 64 20  inputs provided 
87f0: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
8800: 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72  re..    /// libr
8810: 61 72 79 20 74 6f 20 74 68 65 20 3c 73 65 65 20  ary to the <see 
8820: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
8830: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
8840: 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
8850: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8860: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
8870: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
8880: 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 0d  LiteIndexInputs.
8890: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
88a0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
88b0: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
88c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
88d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
88e0: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
88f0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
8900: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
8910: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8920: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
8930: 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74  ram name="nConst
8940: 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  raint">..       
8950: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
8960: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
8970: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
8980: 69 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  int" /> instance
8990: 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
89a0: 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73  / pre-allocate s
89b0: 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20  pace for...     
89c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
89d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
89e0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72  ram name="nOrder
89f0: 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  By">..        //
8a00: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
8a10: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
8a20: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f  eIndexOrderBy" /
8a30: 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a  > instances to..
8a40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d          /// pre-
8a50: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
8a60: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
8a70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8a80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
8a90: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 28 69 6e  teIndexInputs(in
8aa0: 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69  t nConstraint, i
8ab0: 6e 74 20 6e 4f 72 64 65 72 42 79 29 0d 0a 20 20  nt nOrderBy)..  
8ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8ad0: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73       constraints
8ae0: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8af0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 6e 43 6f  exConstraint[nCo
8b00: 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 20 20 20 20  nstraint];..    
8b10: 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
8b20: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8b30: 65 78 4f 72 64 65 72 42 79 5b 6e 4f 72 64 65 72  exOrderBy[nOrder
8b40: 42 79 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  By];..        }.
8b50: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
8b60: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
8bc0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
8bd0: 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
8be0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
8bf0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
8c00: 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73  nt[] constraints
8c10: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
8c20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8c30: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
8c40: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
8c50: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
8c60: 6e 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  nt" /> object in
8c70: 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20  stances,..      
8c80: 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61    /// each conta
8c90: 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f  ining informatio
8ca0: 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20 74 68  n supplied by th
8cb0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
8cc0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
8cd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8ce0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
8cf0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
8d00: 61 69 6e 74 5b 5d 20 43 6f 6e 73 74 72 61 69 6e  aint[] Constrain
8d10: 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ts..        {.. 
8d20: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
8d30: 20 72 65 74 75 72 6e 20 63 6f 6e 73 74 72 61 69   return constrai
8d40: 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  nts; }..        
8d50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
8d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8db0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
8dc0: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64  dexOrderBy[] ord
8dd0: 65 72 42 79 73 3b 0d 0a 20 20 20 20 20 20 20 20  erBys;..        
8de0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8df0: 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72         /// An ar
8e00: 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ray of <see cref
8e10: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  ="SQLiteIndexOrd
8e20: 65 72 42 79 22 20 2f 3e 20 6f 62 6a 65 63 74 20  erBy" /> object 
8e30: 69 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20  instances,..    
8e40: 20 20 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e      /// each con
8e50: 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74  taining informat
8e60: 69 6f 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20  ion supplied by 
8e70: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
8e80: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
8e90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8ea0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
8eb0: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
8ec0: 72 42 79 5b 5d 20 4f 72 64 65 72 42 79 73 0d 0a  rBy[] OrderBys..
8ed0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8ee0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
8ef0: 75 72 6e 20 6f 72 64 65 72 42 79 73 3b 20 7d 0d  urn orderBys; }.
8f00: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8f10: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8f20: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
8f30: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8f90: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
8fa0: 64 65 78 4f 75 74 70 75 74 73 20 48 65 6c 70 65  dexOutputs Helpe
8fb0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
8fc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8fd0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
8fe0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76 61  epresents the va
8ff0: 72 69 6f 75 73 20 6f 75 74 70 75 74 73 20 70 72  rious outputs pr
9000: 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
9010: 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f  Lite core..    /
9020: 2f 2f 20 6c 69 62 72 61 72 79 20 62 79 20 74 68  // library by th
9030: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
9040: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
9050: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  e.BestIndex" /> 
9060: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f  method...    ///
9070: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9080: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
9090: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
90a0: 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a  Outputs..    {..
90b0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
90c0: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
90d0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
90e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
90f0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
9100: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
9110: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
9120: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9130: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9140: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9150: 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d  ="nConstraint">.
9160: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
9170: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
9180: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
9190: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
91a0: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 0d 0a  " /> instances..
91b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 70          /// to p
91c0: 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63  re-allocate spac
91d0: 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  e for...        
91e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
91f0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
9200: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
9210: 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  s(int nConstrain
9220: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
9230: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
9240: 72 61 69 6e 74 55 73 61 67 65 73 20 3d 20 6e 65  raintUsages = ne
9250: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  w SQLiteIndexCon
9260: 73 74 72 61 69 6e 74 55 73 61 67 65 5b 6e 43 6f  straintUsage[nCo
9270: 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 0d 0a 20 20  nstraint];....  
9280: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9290: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
92a0: 46 49 58 3a 20 43 72 65 61 74 65 20 74 68 65 20  FIX: Create the 
92b0: 5b 65 6d 70 74 79 5d 20 63 6f 6e 73 74 72 61 69  [empty] constrai
92c0: 6e 74 20 75 73 61 67 65 73 20 6e 6f 77 20 73 6f  nt usages now so
92d0: 20 74 68 65 79 20 63 61 6e 20 62 65 0d 0a 20 20   they can be..  
92e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
92f0: 20 20 20 20 20 75 73 65 64 20 62 79 20 74 68 65       used by the
9300: 20 78 42 65 73 74 49 6e 64 65 78 20 63 61 6c 6c   xBestIndex call
9310: 62 61 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20  back...         
9320: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9330: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e     for (int iCon
9340: 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f  straint = 0; iCo
9350: 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73  nstraint < nCons
9360: 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61  traint; iConstra
9370: 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  int++)..        
9380: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
9390: 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72  ntUsages[iConstr
93a0: 61 69 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69  aint] = new SQLi
93b0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
93c0: 74 55 73 61 67 65 28 29 3b 0d 0a 20 20 20 20 20  tUsage();..     
93d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
93e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
93f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9440: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9450: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9460: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
9470: 74 68 65 20 6e 61 74 69 76 65 20 65 73 74 69 6d  the native estim
9480: 61 74 65 64 52 6f 77 73 20 66 69 65 6c 64 20 63  atedRows field c
9490: 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61 73 65  an be used, base
94a0: 64 20 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d on..        //
94b0: 2f 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  / the available 
94c0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
94d0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
94e0: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
94f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9500: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9510: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
9520: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
9530: 3c 73 65 65 20 63 72 65 66 3d 22 45 73 74 69 6d  <see cref="Estim
9540: 61 74 65 64 52 6f 77 73 22 20 2f 3e 20 70 72 6f  atedRows" /> pro
9550: 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74  perty is support
9560: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
9570: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
9580: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
9590: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
95a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
95b0: 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 45  lic bool CanUseE
95c0: 73 74 69 6d 61 74 65 64 52 6f 77 73 28 29 0d 0a  stimatedRows()..
95d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
95e0: 20 20 20 20 20 20 20 69 66 20 28 55 6e 73 61 66         if (Unsaf
95f0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
9600: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
9610: 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30  n_number() >= 30
9620: 30 38 30 30 32 29 0d 0a 20 20 20 20 20 20 20 20  08002)..        
9630: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
9640: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
9650: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
9660: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
9670: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
96c0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
96d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
96e0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
96f0: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 66   if the native f
9700: 6c 61 67 73 20 66 69 65 6c 64 20 63 61 6e 20 62  lags field can b
9710: 65 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e  e used, based on
9720: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
9730: 2f 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73  / available vers
9740: 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74  ion of the SQLit
9750: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
9760: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9770: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9780: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
9790: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
97a0: 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65  zero if the <see
97b0: 20 63 72 65 66 3d 22 49 6e 64 65 78 46 6c 61 67   cref="IndexFlag
97c0: 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 69  s" /> property i
97d0: 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 0d 0a  s supported by..
97e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
97f0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
9800: 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
9810: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9820: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
9830: 6c 20 43 61 6e 55 73 65 49 6e 64 65 78 46 6c 61  l CanUseIndexFla
9840: 67 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  gs()..        {.
9850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
9860: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
9870: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62  hods.sqlite3_lib
9880: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
9890: 20 3e 3d 20 33 30 30 39 30 30 30 29 0d 0a 20 20   >= 3009000)..  
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
98b0: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
98c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
98d0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
98e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9940: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9950: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
9960: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61  rmines if the na
9970: 74 69 76 65 20 66 6c 61 67 73 20 66 69 65 6c 64  tive flags field
9980: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61   can be used, ba
9990: 73 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  sed on the..    
99a0: 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c      /// availabl
99b0: 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  e version of the
99c0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
99d0: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
99e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
99f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
9a00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
9a10: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
9a20: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6c  e <see cref="Col
9a30: 75 6d 6e 73 55 73 65 64 22 20 2f 3e 20 70 72 6f  umnsUsed" /> pro
9a40: 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74  perty is support
9a50: 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  ed by..        /
9a60: 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  // the SQLite co
9a70: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
9a80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
9a90: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
9aa0: 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 43  lic bool CanUseC
9ab0: 6f 6c 75 6d 6e 73 55 73 65 64 28 29 0d 0a 20 20  olumnsUsed()..  
9ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9ad0: 20 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e       if (UnsafeN
9ae0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
9af0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
9b00: 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30 31 30  number() >= 3010
9b10: 30 30 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  000)..          
9b20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
9b30: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9b40: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
9b50: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9b60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9bb0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
9bc0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
9bd0: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
9be0: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ate SQLiteIndexC
9bf0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
9c00: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
9c10: 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s;..        /// 
9c20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9c30: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20     /// An array 
9c40: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
9c50: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
9c60: 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 6f 62 6a  intUsage" /> obj
9c70: 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
9c80: 20 69 6e 73 74 61 6e 63 65 73 2c 20 65 61 63 68   instances, each
9c90: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
9ca0: 72 6d 61 74 69 6f 6e 20 74 6f 20 62 65 20 73 75  rmation to be su
9cb0: 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 53 51  pplied to the SQ
9cc0: 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Lite..        //
9cd0: 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  / core library..
9ce0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9cf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9d00: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
9d10: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
9d20: 67 65 5b 5d 20 43 6f 6e 73 74 72 61 69 6e 74 55  ge[] ConstraintU
9d30: 73 61 67 65 73 0d 0a 20 20 20 20 20 20 20 20 7b  sages..        {
9d40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
9d50: 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73 74  t { return const
9d60: 72 61 69 6e 74 55 73 61 67 65 73 3b 20 7d 0d 0a  raintUsages; }..
9d70: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9d80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9dd0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
9de0: 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  int indexNumber;
9df0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9e00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9e10: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
9e20: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
9e30: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
9e40: 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75  ndex.  This valu
9e50: 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  e will..        
9e60: 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70 72 6f  /// later be pro
9e70: 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65  vided to the <se
9e80: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
9e90: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c  anagedModule.Fil
9ea0: 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ter" />..       
9eb0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
9ec0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9ed0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9ee0: 62 6c 69 63 20 69 6e 74 20 49 6e 64 65 78 4e 75  blic int IndexNu
9ef0: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
9f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
9f10: 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 4e   { return indexN
9f20: 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20  umber; }..      
9f30: 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65        set { inde
9f40: 78 4e 75 6d 62 65 72 20 3d 20 76 61 6c 75 65 3b  xNumber = value;
9f50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9f60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
9fc0: 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78  ate string index
9fd0: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20  String;..       
9fe0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9ff0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69          /// Stri
a000: 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  ng used to help 
a010: 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
a020: 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68  ected index.  Th
a030: 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20  is value will.. 
a040: 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72         /// later
a050: 20 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20   be provided to 
a060: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
a070: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
a080: 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a  ule.Filter" />..
a090: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
a0a0: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
a0b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a0c0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
a0d0: 6e 67 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a  ng IndexString..
a0e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a0f0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
a100: 75 72 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b  urn indexString;
a110: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
a120: 73 65 74 20 7b 20 69 6e 64 65 78 53 74 72 69 6e  set { indexStrin
a130: 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
a140: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a150: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
a1a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
a1b0: 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  t needToFreeInde
a1c0: 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  xString;..      
a1d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a1e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
a1f0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 69 6e 64  -zero if the ind
a200: 65 78 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62  ex string must b
a210: 65 20 66 72 65 65 64 20 62 79 20 74 68 65 20 53  e freed by the S
a220: 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
a230: 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e      /// library.
a240: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
a250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a260: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4e 65 65    public int Nee
a270: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
a280: 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
a290: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
a2a0: 20 72 65 74 75 72 6e 20 6e 65 65 64 54 6f 46 72   return needToFr
a2b0: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d  eeIndexString; }
a2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
a2d0: 74 20 7b 20 6e 65 65 64 54 6f 46 72 65 65 49 6e  t { needToFreeIn
a2e0: 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75  dexString = valu
a2f0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
a300: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a350: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
a360: 69 76 61 74 65 20 69 6e 74 20 6f 72 64 65 72 42  ivate int orderB
a370: 79 43 6f 6e 73 75 6d 65 64 3b 0d 0a 20 20 20 20  yConsumed;..    
a380: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a390: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
a3a0: 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73  rue if output is
a3b0: 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64   already ordered
a3c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
a3d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a3e0: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4f 72     public int Or
a3f0: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 0d 0a 20  derByConsumed.. 
a400: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a410: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
a420: 72 6e 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d  rn orderByConsum
a430: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ed; }..         
a440: 20 20 20 73 65 74 20 7b 20 6f 72 64 65 72 42 79     set { orderBy
a450: 43 6f 6e 73 75 6d 65 64 20 3d 20 76 61 6c 75 65  Consumed = value
a460: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
a470: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
a4d0: 76 61 74 65 20 64 6f 75 62 6c 65 3f 20 65 73 74  vate double? est
a4e0: 69 6d 61 74 65 64 43 6f 73 74 3b 0d 0a 20 20 20  imatedCost;..   
a4f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a500: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
a510: 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f  Estimated cost o
a520: 66 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64  f using this ind
a530: 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c  ex.  Using a nul
a540: 6c 20 76 61 6c 75 65 20 68 65 72 65 0d 0a 20 20  l value here..  
a550: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61        /// indica
a560: 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61 75  tes that a defau
a570: 6c 74 20 65 73 74 69 6d 61 74 65 64 20 63 6f 73  lt estimated cos
a580: 74 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  t value should b
a590: 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  e used...       
a5a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a5b0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
a5c0: 64 6f 75 62 6c 65 3f 20 45 73 74 69 6d 61 74 65  double? Estimate
a5d0: 64 43 6f 73 74 0d 0a 20 20 20 20 20 20 20 20 7b  dCost..        {
a5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
a5f0: 74 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d  t { return estim
a600: 61 74 65 64 43 6f 73 74 3b 20 7d 0d 0a 20 20 20  atedCost; }..   
a610: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 65           set { e
a620: 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 76  stimatedCost = v
a630: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
a640: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
a650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a690: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a6a0: 20 70 72 69 76 61 74 65 20 6c 6f 6e 67 3f 20 65   private long? e
a6b0: 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 0d 0a 20  stimatedRows;.. 
a6c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
a6d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
a6e0: 2f 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62  / Estimated numb
a6f0: 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72  er of rows retur
a700: 6e 65 64 2e 20 20 55 73 69 6e 67 20 61 20 6e 75  ned.  Using a nu
a710: 6c 6c 20 76 61 6c 75 65 20 68 65 72 65 0d 0a 20  ll value here.. 
a720: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63         /// indic
a730: 61 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61  ates that a defa
a740: 75 6c 74 20 65 73 74 69 6d 61 74 65 64 20 72 6f  ult estimated ro
a750: 77 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20  ws value should 
a760: 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  be used...      
a770: 20 20 2f 2f 2f 20 54 68 69 73 20 70 72 6f 70 65    /// This prope
a780: 72 74 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63  rty has no effec
a790: 74 20 69 66 20 74 68 65 20 53 51 4c 69 74 65 20  t if the SQLite 
a7a0: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
a7b0: 6e 6f 74 20 61 74 0d 0a 20 20 20 20 20 20 20 20  not at..        
a7c0: 2f 2f 2f 20 6c 65 61 73 74 20 76 65 72 73 69 6f  /// least versio
a7d0: 6e 20 33 2e 38 2e 32 2e 0d 0a 20 20 20 20 20 20  n 3.8.2...      
a7e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a7f0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
a800: 20 6c 6f 6e 67 3f 20 45 73 74 69 6d 61 74 65 64   long? Estimated
a810: 52 6f 77 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Rows..        {.
a820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
a830: 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d 61   { return estima
a840: 74 65 64 52 6f 77 73 3b 20 7d 0d 0a 20 20 20 20  tedRows; }..    
a850: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 65 73          set { es
a860: 74 69 6d 61 74 65 64 52 6f 77 73 20 3d 20 76 61  timatedRows = va
a870: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
a880: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a8e0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
a8f0: 64 65 78 46 6c 61 67 73 3f 20 69 6e 64 65 78 46  dexFlags? indexF
a900: 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lags;..        /
a910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a920: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
a930: 61 67 73 20 74 68 61 74 20 73 68 6f 75 6c 64 20  ags that should 
a940: 62 65 20 75 73 65 64 20 77 69 74 68 20 74 68 69  be used with thi
a950: 73 20 69 6e 64 65 78 2e 20 20 55 73 69 6e 67 20  s index.  Using 
a960: 61 20 6e 75 6c 6c 20 76 61 6c 75 65 0d 0a 20 20  a null value..  
a970: 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 20 69        /// here i
a980: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20  ndicates that a 
a990: 64 65 66 61 75 6c 74 20 66 6c 61 67 73 20 76 61  default flags va
a9a0: 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73  lue should be us
a9b0: 65 64 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 20  ed.  This..     
a9c0: 20 20 20 2f 2f 2f 20 70 72 6f 70 65 72 74 79 20     /// property 
a9d0: 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 66  has no effect if
a9e0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
a9f0: 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20   library is not 
aa00: 61 74 20 6c 65 61 73 74 0d 0a 20 20 20 20 20 20  at least..      
aa10: 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 33 2e    /// version 3.
aa20: 39 2e 30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  9.0...        //
aa30: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
aa40: 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
aa50: 69 74 65 49 6e 64 65 78 46 6c 61 67 73 3f 20 49  iteIndexFlags? I
aa60: 6e 64 65 78 46 6c 61 67 73 0d 0a 20 20 20 20 20  ndexFlags..     
aa70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
aa80: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69    get { return i
aa90: 6e 64 65 78 46 6c 61 67 73 3b 20 7d 0d 0a 20 20  ndexFlags; }..  
aaa0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
aab0: 69 6e 64 65 78 46 6c 61 67 73 20 3d 20 76 61 6c  indexFlags = val
aac0: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
aad0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
aae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab20: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
ab30: 72 69 76 61 74 65 20 6c 6f 6e 67 3f 20 63 6f 6c  rivate long? col
ab40: 75 6d 6e 73 55 73 65 64 3b 0d 0a 20 20 20 20 20  umnsUsed;..     
ab50: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ab60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ab70: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
ab80: 2f 20 49 6e 64 69 63 61 74 65 73 20 77 68 69 63  / Indicates whic
ab90: 68 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65  h columns of the
aba0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
abb0: 61 79 20 62 65 20 72 65 71 75 69 72 65 64 20 62  ay be required b
abc0: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
abd0: 2f 2f 20 63 75 72 72 65 6e 74 20 73 63 61 6e 2e  // current scan.
abe0: 20 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20    Virtual table 
abf0: 63 6f 6c 75 6d 6e 73 20 61 72 65 20 6e 75 6d 62  columns are numb
ac00: 65 72 65 64 20 66 72 6f 6d 20 7a 65 72 6f 20 69  ered from zero i
ac10: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
ac20: 2f 2f 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63  // order in whic
ac30: 68 20 74 68 65 79 20 61 70 70 65 61 72 20 77 69  h they appear wi
ac40: 74 68 69 6e 20 74 68 65 20 43 52 45 41 54 45 20  thin the CREATE 
ac50: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
ac60: 70 61 73 73 65 64 0d 0a 20 20 20 20 20 20 20 20  passed..        
ac70: 2f 2f 2f 20 74 6f 20 73 71 6c 69 74 65 33 5f 64  /// to sqlite3_d
ac80: 65 63 6c 61 72 65 5f 76 74 61 62 28 29 2e 20 20  eclare_vtab().  
ac90: 46 6f 72 20 74 68 65 20 66 69 72 73 74 20 36 33  For the first 63
aca0: 20 63 6f 6c 75 6d 6e 73 20 28 63 6f 6c 75 6d 6e   columns (column
acb0: 73 20 30 2d 36 32 29 2c 0d 0a 20 20 20 20 20 20  s 0-62),..      
acc0: 20 20 2f 2f 2f 20 74 68 65 20 63 6f 72 72 65 73    /// the corres
acd0: 70 6f 6e 64 69 6e 67 20 62 69 74 20 69 73 20 73  ponding bit is s
ace0: 65 74 20 77 69 74 68 69 6e 20 74 68 65 20 62 69  et within the bi
acf0: 74 20 6d 61 73 6b 20 69 66 20 74 68 65 20 63 6f  t mask if the co
ad00: 6c 75 6d 6e 20 6d 61 79 0d 0a 20 20 20 20 20 20  lumn may..      
ad10: 20 20 2f 2f 2f 20 62 65 20 72 65 71 75 69 72 65    /// be require
ad20: 64 20 62 79 20 53 51 4c 69 74 65 2e 20 20 49 66  d by SQLite.  If
ad30: 20 74 68 65 20 74 61 62 6c 65 20 68 61 73 20 61   the table has a
ad40: 74 20 6c 65 61 73 74 20 36 34 20 63 6f 6c 75 6d  t least 64 colum
ad50: 6e 73 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  ns and..        
ad60: 2f 2f 2f 20 61 6e 79 20 63 6f 6c 75 6d 6e 20 74  /// any column t
ad70: 6f 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 74  o the right of t
ad80: 68 65 20 66 69 72 73 74 20 36 33 20 69 73 20 72  he first 63 is r
ad90: 65 71 75 69 72 65 64 2c 20 74 68 65 6e 20 62 69  equired, then bi
ada0: 74 20 36 33 20 6f 66 0d 0a 20 20 20 20 20 20 20  t 63 of..       
adb0: 20 2f 2f 2f 20 63 6f 6c 55 73 65 64 20 69 73 20   /// colUsed is 
adc0: 61 6c 73 6f 20 73 65 74 2e 20 20 49 6e 20 6f 74  also set.  In ot
add0: 68 65 72 20 77 6f 72 64 73 2c 20 63 6f 6c 75 6d  her words, colum
ade0: 6e 20 69 43 6f 6c 20 6d 61 79 20 62 65 20 72 65  n iCol may be re
adf0: 71 75 69 72 65 64 0d 0a 20 20 20 20 20 20 20 20  quired..        
ae00: 2f 2f 2f 20 69 66 20 74 68 65 20 65 78 70 72 65  /// if the expre
ae10: 73 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ssion..        /
ae20: 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
ae30: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 3c 63      /// <para><c
ae40: 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
ae50: 2f 20 28 63 6f 6c 55 73 65 64 20 26 61 6d 70 3b  / (colUsed &amp;
ae60: 20 28 28 73 71 6c 69 74 65 33 5f 75 69 6e 74 36   ((sqlite3_uint6
ae70: 34 29 31 20 26 6c 74 3b 26 6c 74 3b 20 28 69 43  4)1 &lt;&lt; (iC
ae80: 6f 6c 26 67 74 3b 3d 36 33 20 3f 20 36 33 20 3a  ol&gt;=63 ? 63 :
ae90: 20 69 43 6f 6c 29 29 29 0d 0a 20 20 20 20 20 20   iCol)))..      
aea0: 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 3c 2f 70    /// </code></p
aeb0: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
aec0: 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
aed0: 20 20 2f 2f 2f 20 65 76 61 6c 75 61 74 65 73 20    /// evaluates 
aee0: 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e 20 20 55 73  to non-zero.  Us
aef0: 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  ing a null value
af00: 20 68 65 72 65 20 69 6e 64 69 63 61 74 65 73 20   here indicates 
af10: 74 68 61 74 20 61 0d 0a 20 20 20 20 20 20 20 20  that a..        
af20: 2f 2f 2f 20 64 65 66 61 75 6c 74 20 66 6c 61 67  /// default flag
af30: 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  s value should b
af40: 65 20 75 73 65 64 2e 20 20 54 68 69 73 20 70 72  e used.  This pr
af50: 6f 70 65 72 74 79 20 68 61 73 20 6e 6f 20 65 66  operty has no ef
af60: 66 65 63 74 20 69 66 0d 0a 20 20 20 20 20 20 20  fect if..       
af70: 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20   /// the SQLite 
af80: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
af90: 6e 6f 74 20 61 74 20 6c 65 61 73 74 20 76 65 72  not at least ver
afa0: 73 69 6f 6e 20 33 2e 31 30 2e 30 2e 0d 0a 20 20  sion 3.10.0...  
afb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
afc0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
afd0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
afe0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 3f 20     public long? 
aff0: 43 6f 6c 75 6d 6e 73 55 73 65 64 0d 0a 20 20 20  ColumnsUsed..   
b000: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b010: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
b020: 20 63 6f 6c 75 6d 6e 73 55 73 65 64 3b 20 7d 0d   columnsUsed; }.
b030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
b040: 20 7b 20 63 6f 6c 75 6d 6e 73 55 73 65 64 20 3d   { columnsUsed =
b050: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
b060: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
b070: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
b080: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
b090: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
b0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
b0f0: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 20 48 65  n SQLiteIndex He
b100: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
b110: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b120: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
b130: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
b140: 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20   various inputs 
b150: 61 6e 64 20 6f 75 74 70 75 74 73 20 75 73 65 64  and outputs used
b160: 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f   with the..    /
b170: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
b180: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
b190: 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
b1a0: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
b1b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b1c0: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
b1d0: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
b1e0: 78 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  x..    {..      
b1f0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
b200: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
b210: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
b220: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b230: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
b240: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
b250: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
b260: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
b280: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e  param name="nCon
b290: 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20  straint">..     
b2a0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
b2b0: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
b2c0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
b2d0: 72 61 69 6e 74 22 20 2f 3e 20 28 61 6e 64 0d 0a  raint" /> (and..
b2e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
b2f0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
b300: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
b310: 65 22 20 2f 3e 29 20 69 6e 73 74 61 6e 63 65 73  e" />) instances
b320: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
b330: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
b340: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
b350: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b360: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b370: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
b380: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
b390: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
b3a0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b3b0: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
b3c0: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
b3d0: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
b3e0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
b3f0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
b400: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b410: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
b420: 65 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  eIndex(..       
b430: 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72       int nConstr
b440: 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  aint,..         
b450: 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d     int nOrderBy.
b460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
b470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b480: 20 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20         inputs = 
b490: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 49  new SQLiteIndexI
b4a0: 6e 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e  nputs(nConstrain
b4b0: 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20  t, nOrderBy);.. 
b4c0: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
b4d0: 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  ts = new SQLiteI
b4e0: 6e 64 65 78 4f 75 74 70 75 74 73 28 6e 43 6f 6e  ndexOutputs(nCon
b4f0: 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20  straint);..     
b500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
b510: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b520: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
b530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b570: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
b580: 72 69 76 61 74 65 20 4d 61 72 73 68 61 6c 20 48  rivate Marshal H
b590: 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 20 28 46  elper Methods (F
b5a0: 6f 72 20 54 65 73 74 20 55 73 65 20 4f 6e 6c 79  or Test Use Only
b5b0: 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  )..        /// <
b5c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b5d0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
b5e0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
b5f0: 73 74 72 75 63 74 75 72 65 20 73 69 7a 65 73 20  structure sizes 
b600: 6e 65 65 64 65 64 20 74 6f 20 63 72 65 61 74 65  needed to create
b610: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
b620: 2f 20 70 6f 70 75 6c 61 74 65 20 61 20 6e 61 74  / populate a nat
b630: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
b640: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
b650: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b660: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
b670: 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  fo" />..        
b680: 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
b690: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
b6a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b6b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
b6c0: 22 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 22  "sizeOfInfoType"
b6d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
b6e0: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e  he size of the n
b6f0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
b700: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
b710: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
b720: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
b730: 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20  info" />..      
b740: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
b750: 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d  is stored here..
b760: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b770: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b780: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b790: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b7a0: 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  Type">..        
b7b0: 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20  /// The size of 
b7c0: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
b7d0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
b7e0: 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
b7f0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
b800: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 22  ndex_constraint"
b810: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
b820: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74   structure is st
b830: 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20  ored here...    
b840: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b850: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
b860: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
b870: 66 4f 72 64 65 72 42 79 54 79 70 65 22 3e 0d 0a  fOrderByType">..
b880: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
b890: 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69  size of the nati
b8a0: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
b8b0: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
b8c0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b8d0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
b8e0: 65 72 62 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20  erby" />..      
b8f0: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
b900: 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d  is stored here..
b910: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b920: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b930: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b940: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b950: 55 73 61 67 65 54 79 70 65 22 3e 0d 0a 20 20 20  UsageType">..   
b960: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
b970: 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
b980: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
b990: 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
b9a0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
b9b0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
b9c0: 61 69 6e 74 5f 75 73 61 67 65 22 20 2f 3e 0d 0a  aint_usage" />..
b9d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
b9e0: 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20  cture is stored 
b9f0: 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  here...        /
ba00: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ba10: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
ba20: 74 69 63 20 76 6f 69 64 20 53 69 7a 65 4f 66 4e  tic void SizeOfN
ba30: 61 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20  ative(..        
ba40: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
ba50: 4f 66 49 6e 66 6f 54 79 70 65 2c 0d 0a 20 20 20  OfInfoType,..   
ba60: 20 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74           out int
ba70: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
ba80: 74 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20  tType,..        
ba90: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
baa0: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 2c 0d 0a  OfOrderByType,..
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 20              out 
bac0: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
bad0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 0d 0a 20  aintUsageType.. 
bae0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
baf0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bb00: 20 20 20 20 20 73 69 7a 65 4f 66 49 6e 66 6f 54       sizeOfInfoT
bb10: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
bb20: 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
bb40: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
bb50: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
bb60: 69 6e 66 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  info));....     
bb70: 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e         sizeOfCon
bb80: 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61  straintType = Ma
bb90: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
bba0: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
bbb0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
bbc0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
bbd0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
bbe0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
bbf0: 20 20 20 20 20 73 69 7a 65 4f 66 4f 72 64 65 72       sizeOfOrder
bc00: 42 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ByType = Marshal
bc10: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
bc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bc30: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
bc40: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
bc50: 65 78 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d  ex_orderby));...
bc60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a  .            siz
bc70: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
bc80: 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  geType = Marshal
bc90: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
bca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bcb0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
bcc0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
bcd0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
bce0: 61 67 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  age));..        
bcf0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
bd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
bd50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bd60: 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
bd70: 70 74 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  pts to allocate 
bd80: 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 61  and initialize a
bd90: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
bda0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
bdb0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
bdc0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
bdd0: 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20  x_info" />..    
bde0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
bdf0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
be00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
be10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
be20: 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74  ame="nConstraint
be30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
be40: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73  The number of <s
be50: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
be60: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20  ndexConstraint" 
be70: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
be80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
be90: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
bea0: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
beb0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
bec0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
bed0: 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d  ame="nOrderBy">.
bee0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
bef0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
bf00: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
bf10: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73  xOrderBy" /> ins
bf20: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
bf30: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
bf40: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
bf50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
bf60: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
bf70: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
bf80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
bf90: 6c 79 20 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74  ly allocated nat
bfa0: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
bfb0: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
bfc0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
bfd0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
bfe0: 66 6f 22 20 2f 3e 20 73 74 72 75 63 74 75 72 65  fo" /> structure
bff0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2d 4f  ..        /// -O
c000: 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  R- <see cref="In
c010: 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
c020: 20 69 74 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65   it could not be
c030: 20 66 75 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64   fully allocated
c040: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c050: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
c060: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c070: 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74  c IntPtr Allocat
c080: 65 41 6e 64 49 6e 69 74 69 61 6c 69 7a 65 4e 61  eAndInitializeNa
c090: 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20 20  tive(..         
c0a0: 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69     int nConstrai
c0b0: 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt,..           
c0c0: 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20   int nOrderBy.. 
c0d0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
c0e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c0f0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
c100: 65 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ex = IntPtr.Zero
c110: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ;..            I
c120: 6e 74 50 74 72 20 70 49 6e 66 6f 20 3d 20 49 6e  ntPtr pInfo = In
c130: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
c140: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
c150: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e 74  Constraint = Int
c160: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
c170: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f         IntPtr pO
c180: 72 64 65 72 42 79 20 3d 20 49 6e 74 50 74 72 2e  rderBy = IntPtr.
c190: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c1a0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
c1b0: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74  raintUsage = Int
c1c0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
c1d0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
c1e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
c200: 20 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 3b   sizeOfInfoType;
c210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c220: 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65    int sizeOfOrde
c230: 72 42 79 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  rByType;..      
c240: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
c250: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
c260: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
c270: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
c280: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
c290: 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  pe;....         
c2a0: 20 20 20 20 20 20 20 53 69 7a 65 4f 66 4e 61 74         SizeOfNat
c2b0: 69 76 65 28 6f 75 74 20 73 69 7a 65 4f 66 49 6e  ive(out sizeOfIn
c2c0: 66 6f 54 79 70 65 2c 20 6f 75 74 20 73 69 7a 65  foType, out size
c2d0: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  OfConstraintType
c2e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
c2f0: 20 20 20 20 20 20 20 6f 75 74 20 73 69 7a 65 4f         out sizeO
c300: 66 4f 72 64 65 72 42 79 54 79 70 65 2c 20 6f 75  fOrderByType, ou
c310: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
c320: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
c330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c340: 20 69 66 20 28 28 73 69 7a 65 4f 66 49 6e 66 6f   if ((sizeOfInfo
c350: 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20  Type > 0) &&..  
c360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c370: 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61    (sizeOfConstra
c380: 69 6e 74 54 79 70 65 20 3e 20 30 29 20 26 26 0d  intType > 0) &&.
c390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3a0: 20 20 20 20 20 28 73 69 7a 65 4f 66 4f 72 64 65       (sizeOfOrde
c3b0: 72 42 79 54 79 70 65 20 3e 20 30 29 20 26 26 0d  rByType > 0) &&.
c3c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3d0: 20 20 20 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73       (sizeOfCons
c3e0: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
c3f0: 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  > 0))..         
c400: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c420: 6e 66 6f 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  nfo = SQLiteMemo
c430: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65  ry.Allocate(size
c440: 4f 66 49 6e 66 6f 54 79 70 65 29 3b 0d 0a 0d 0a  OfInfoType);....
c450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c460: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20      pConstraint 
c470: 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
c480: 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20  llocate(..      
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4a0: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
c4b0: 6e 74 54 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72  ntType * nConstr
c4c0: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f                pO
c4e0: 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d  rderBy = SQLiteM
c4f0: 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d  emory.Allocate(.
c500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c510: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f           sizeOfO
c520: 72 64 65 72 42 79 54 79 70 65 20 2a 20 6e 4f 72  rderByType * nOr
c530: 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  derBy);....     
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
c550: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
c560: 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
c570: 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20  llocate(..      
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
c5a0: 6e 74 55 73 61 67 65 54 79 70 65 20 2a 20 6e 43  ntUsageType * nC
c5b0: 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20  onstraint);.... 
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 69 66 20 28 28 70 49 6e 66 6f 20 21 3d     if ((pInfo !=
c5e0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26   IntPtr.Zero) &&
c5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c600: 20 20 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73            (pCons
c610: 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72  traint != IntPtr
c620: 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20 20 20  .Zero) &&..     
c630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c640: 20 20 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20     (pOrderBy != 
c650: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d  IntPtr.Zero) &&.
c660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c670: 20 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74           (pConst
c680: 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 49 6e  raintUsage != In
c690: 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c6c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
c6d0: 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6f0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
c700: 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
c710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c730: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 6e 43 6f  nfo, offset, nCo
c740: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
c750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c760: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c770: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c780: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7a0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c7b0: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
c7c0: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
c7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7e0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c7f0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
c800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c820: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f  nfo, offset, pCo
c830: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
c840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c850: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c860: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c870: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c890: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c8a0: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a  IntPtr.Size, siz
c8b0: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8d0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c8e0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 0d  hal.WriteInt32(.
c8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
c910: 66 6f 2c 20 6f 66 66 73 65 74 2c 20 6e 4f 72 64  fo, offset, nOrd
c920: 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBy);....      
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c940: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
c950: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
c960: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
c970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c980: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
c990: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
c9a0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9c0: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
c9d0: 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20  WriteIntPtr(..  
c9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9f0: 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c            pInfo,
ca00: 20 6f 66 66 73 65 74 2c 20 70 4f 72 64 65 72 42   offset, pOrderB
ca10: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
ca30: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
ca40: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
ca50: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca70: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
ca80: 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a  Size, IntPtr.Siz
ca90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
cab0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
cac0: 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  teIntPtr(..     
cad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cae0: 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66         pInfo, of
caf0: 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e  fset, pConstrain
cb00: 74 55 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  tUsage);....    
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb20: 20 20 20 20 70 49 6e 64 65 78 20 3d 20 70 49 6e      pIndex = pIn
cb30: 66 6f 3b 20 2f 2a 20 4e 4f 54 45 3a 20 53 75 63  fo; /* NOTE: Suc
cb40: 63 65 73 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  cess. */..      
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
cb60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
cb80: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
cb90: 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
cba0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cbb0: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
cbc0: 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x == IntPtr.Zero
cbd0: 29 20 2f 2a 20 4e 4f 54 45 3a 20 46 61 69 6c 75  ) /* NOTE: Failu
cbe0: 72 65 3f 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  re? */..        
cbf0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
cc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cc10: 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73  f (pConstraintUs
cc20: 61 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  age != IntPtr.Ze
cc30: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
cc40: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc60: 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
cc70: 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e  .Free(pConstrain
cc80: 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20  tUsage);..      
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61    pConstraintUsa
ccb0: 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ge = IntPtr.Zero
ccc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ccd0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 69 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20  if (pOrderBy != 
cd00: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
cd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
cd40: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
cd50: 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  OrderBy);..     
cd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd70: 20 20 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e     pOrderBy = In
cd80: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cda0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
cdb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
cdc0: 6e 73 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50  nstraint != IntP
cdd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
cdf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ce00: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
ce10: 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73  emory.Free(pCons
ce20: 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
ce30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce40: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20    pConstraint = 
ce50: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ce80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
ce90: 49 6e 66 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a  Info != IntPtr.Z
cea0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
ceb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ced0: 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
cee0: 79 2e 46 72 65 65 28 70 49 6e 66 6f 29 3b 0d 0a  y.Free(pInfo);..
cef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf00: 20 20 20 20 20 20 20 20 70 49 6e 66 6f 20 3d 20          pInfo = 
cf10: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
cf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf30: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cf40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
cf50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
cf60: 20 20 20 20 20 72 65 74 75 72 6e 20 70 49 6e 64       return pInd
cf70: 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ex;..        }..
cf80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
cf90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfd0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
cfe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
cff0: 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 6c      /// Frees al
d000: 6c 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 73 73  l the memory ass
d010: 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20 6e  ociated with a n
d020: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
d030: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
d040: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
d050: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
d060: 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20  info" />..      
d070: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
d080: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
d090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d0a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d0b0: 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20  e="pIndex">..   
d0c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
d0d0: 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
d0e0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
d0f0: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72  3_index_info str
d100: 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20  ucture to..     
d110: 20 20 20 2f 2f 2f 20 66 72 65 65 2e 0d 0a 20 20     /// free...  
d120: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
d130: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
d140: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
d150: 46 72 65 65 4e 61 74 69 76 65 28 0d 0a 20 20 20  FreeNative(..   
d160: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
d170: 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  pIndex..        
d180: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
d190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d1a0: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
d1b0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d1c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d1d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d1e0: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
d1f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d200: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
d210: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
d220: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
d230: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
d240: 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74  zeof(int), IntPt
d250: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
d260: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
d270: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c  Constraint = SQL
d280: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
d290: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d2a0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
d2b0: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
d2c0: 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 6e 73          int cons
d2d0: 74 72 61 69 6e 74 4f 66 66 73 65 74 20 3d 20 6f  traintOffset = o
d2e0: 66 66 73 65 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  ffset;....      
d2f0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
d300: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
d310: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
d320: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d330: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
d340: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
d350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
d360: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
d370: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d380: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d390: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
d3a0: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
d3b0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d3c0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72        IntPtr pOr
d3d0: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61  derBy = SQLiteMa
d3e0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
d3f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d400: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
d410: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
d420: 20 20 20 69 6e 74 20 6f 72 64 65 72 42 79 4f 66     int orderByOf
d430: 66 73 65 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a  fset = offset;..
d440: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
d450: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
d460: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d470: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d480: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
d490: 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e  tr.Size, IntPtr.
d4a0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d4b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
d4c0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
d4d0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
d4e0: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
d4f0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d500: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
d510: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
d520: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 4f 66  onstraintUsageOf
d530: 66 73 65 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a  fset = offset;..
d540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d550: 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61   (pConstraintUsa
d560: 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ge != IntPtr.Zer
d570: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
d580: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d590: 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
d5a0: 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74  Free(pConstraint
d5b0: 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20  Usage);..       
d5c0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72           pConstr
d5d0: 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50  aintUsage = IntP
d5e0: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
d5f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
d600: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
d610: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d620: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
d630: 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  ex, constraintUs
d640: 61 67 65 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73  ageOffset, pCons
d650: 74 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20  traintUsage);.. 
d660: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
d670: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d680: 70 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74 50  pOrderBy != IntP
d690: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d6a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d6b0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
d6c0: 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 72 64 65  emory.Free(pOrde
d6d0: 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rBy);..         
d6e0: 20 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 20         pOrderBy 
d6f0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
d700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d710: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
d720: 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20  WriteIntPtr(..  
d730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d740: 20 20 70 49 6e 64 65 78 2c 20 6f 72 64 65 72 42    pIndex, orderB
d750: 79 4f 66 66 73 65 74 2c 20 70 4f 72 64 65 72 42  yOffset, pOrderB
d760: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
d770: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
d780: 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e    if (pConstrain
d790: 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t != IntPtr.Zero
d7a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7c0: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
d7d0: 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 29  ree(pConstraint)
d7e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
d7f0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d     pConstraint =
d800: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
d810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d820: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
d830: 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20  riteIntPtr(..   
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d850: 20 70 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61   pIndex, constra
d860: 69 6e 74 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73  intOffset, pCons
d870: 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
d880: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d890: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
d8a0: 78 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x != IntPtr.Zero
d8b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d8d0: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
d8e0: 72 65 65 28 70 49 6e 64 65 78 29 3b 0d 0a 20 20  ree(pIndex);..  
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
d900: 6e 64 65 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ndex = IntPtr.Ze
d910: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
d920: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
d930: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
d940: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
d950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d990: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
d9a0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
d9b0: 20 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72 20   Marshal Helper 
d9c0: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
d9d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d9e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
d9f0: 65 72 74 73 20 61 20 6e 61 74 69 76 65 20 70 6f  erts a native po
da00: 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76  inter to a nativ
da10: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
da20: 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 0d 0a  info structure..
da30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f          /// into
da40: 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66   a new <see cref
da50: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
da60: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
da70: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
da80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
da90: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
daa0: 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20  ame="pIndex">.. 
dab0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
dac0: 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
dad0: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
dae0: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
daf0: 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20  tructure to..   
db00: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74       /// convert
db10: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
db20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
db30: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
db40: 3d 22 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 22  ="includeOutput"
db50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
db60: 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69 6e 63 6c 75  on-zero to inclu
db70: 64 65 20 66 69 65 6c 64 73 20 66 72 6f 6d 20 74  de fields from t
db80: 68 65 20 6f 75 74 70 75 74 73 20 70 6f 72 74 69  he outputs porti
db90: 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  on of the native
dba0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
dbb0: 72 75 63 74 75 72 65 3b 20 6f 74 68 65 72 77 69  ructure; otherwi
dbc0: 73 65 2c 20 74 68 65 20 22 6f 75 74 70 75 74 22  se, the "output"
dbd0: 20 66 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74   fields will not
dbe0: 20 62 65 20 72 65 61 64 2e 0d 0a 20 20 20 20 20   be read...     
dbf0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
dc00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
dc10: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
dc20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
dc30: 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
dc40: 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
dc50: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
dc60: 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 65 77 6c  contain the newl
dc70: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  y..        /// c
dc80: 72 65 61 74 65 64 20 3c 73 65 65 20 63 72 65 66  reated <see cref
dc90: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
dca0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
dcb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
dcc0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
dcd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dce0: 63 20 76 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74  c void FromIntPt
dcf0: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
dd00: 49 6e 74 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a  IntPtr pIndex,..
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
dd20: 20 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 2c 0d   includeOutput,.
dd30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
dd40: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
dd50: 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
dd60: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
dd70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49            if (pI
dd80: 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndex == IntPtr.Z
dd90: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
dda0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
ddb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
ddc0: 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a   offset = 0;....
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
dde0: 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51  nConstraint = SQ
ddf0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
de00: 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
de10: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
de20: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
de30: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
de40: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
de50: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
de60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
de70: 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
de80: 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  ), IntPtr.Size);
de90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dea0: 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
deb0: 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  nt = SQLiteMarsh
dec0: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  al.ReadIntPtr(..
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dee0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
def0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
df00: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
df10: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
df20: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
df30: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
df40: 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f  tPtr.Size, sizeo
df50: 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
df60: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64          int nOrd
df70: 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72  erBy = SQLiteMar
df80: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
df90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfa0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
dfb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
dfc0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
dfd0: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
dfe0: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
dff0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
e000: 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50  izeof(int), IntP
e010: 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
e020: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
e030: 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  pOrderBy = SQLit
e040: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
e050: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
e060: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
e070: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
e080: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
e090: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
e0a0: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e0c0: 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a  includeOutput)..
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e0f0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
e100: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
e110: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
e120: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
e130: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e   IntPtr.Size, In
e140: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
e160: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
e170: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e180: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
e1b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
e1c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e1d0: 69 6e 64 65 78 20 3d 20 6e 65 77 20 53 51 4c 69  index = new SQLi
e1e0: 74 65 49 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61  teIndex(nConstra
e1f0: 69 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d  int, nOrderBy);.
e200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
e210: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 69  iteIndexInputs i
e220: 6e 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e  nputs = index.In
e230: 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  puts;....       
e240: 20 20 20 20 20 69 66 20 28 69 6e 70 75 74 73 20       if (inputs 
e250: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
e260: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e270: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e280: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
e290: 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61  traint[] constra
e2a0: 69 6e 74 73 20 3d 20 69 6e 70 75 74 73 2e 43 6f  ints = inputs.Co
e2b0: 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 0d 0a 20 20  nstraints;....  
e2c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
e2d0: 6e 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c  nstraints == nul
e2e0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e2f0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
e300: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e310: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
e320: 6f 72 64 65 72 42 79 73 20 3d 20 69 6e 70 75 74  orderBys = input
e330: 73 2e 4f 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20  s.OrderBys;.... 
e340: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
e350: 72 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29  rderBys == null)
e360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e370: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
e380: 20 20 20 20 20 20 20 20 20 54 79 70 65 20 63 6f           Type co
e390: 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 74  nstraintType = t
e3a0: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
e3b0: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
e3c0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
e3d0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
e3e0: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
e3f0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
e400: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d  ConstraintType =
e410: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e430: 20 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65    constraintType
e440: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e450: 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73    for (int iCons
e460: 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e  traint = 0; iCon
e470: 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74  straint < nConst
e480: 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69  raint; iConstrai
e490: 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20  nt++)..         
e4a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e4b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66        IntPtr pOf
e4c0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e4d0: 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66  shal.IntPtrForOf
e4e0: 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  fset(..         
e4f0: 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73             pCons
e500: 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61  traint, iConstra
e510: 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73  int * sizeOfCons
e520: 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a  traintType);....
e530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e540: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
e550: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
e560: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  x_constraint con
e570: 73 74 72 61 69 6e 74 20 3d 0d 0a 20 20 20 20 20  straint =..     
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
e590: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
e5a0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
e5b0: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20  x_constraint).. 
e5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5d0: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50         Marshal.P
e5e0: 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f  trToStructure(pO
e5f0: 66 66 73 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e  ffset, constrain
e600: 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  tType);....     
e610: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
e620: 72 61 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69  raints[iConstrai
e630: 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  nt] = new SQLite
e640: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28  IndexConstraint(
e650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e660: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
e670: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e680: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
e690: 20 54 79 70 65 20 6f 72 64 65 72 42 79 54 79 70   Type orderByTyp
e6a0: 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20  e = typeof(..   
e6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
e6c0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
e6d0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
e6e0: 72 64 65 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20  rderby);....    
e6f0: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
e700: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20  OfOrderByType = 
e710: 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 6f  Marshal.SizeOf(o
e720: 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a  rderByType);....
e730: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
e740: 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20  (int iOrderBy = 
e750: 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f  0; iOrderBy < nO
e760: 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79  rderBy; iOrderBy
e770: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
e780: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e790: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73      IntPtr pOffs
e7a0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
e7b0: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
e7c0: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
e7d0: 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72 42           pOrderB
e7e0: 79 2c 20 69 4f 72 64 65 72 42 79 20 2a 20 73 69  y, iOrderBy * si
e7f0: 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65 29  zeOfOrderByType)
e800: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e810: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
e820: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
e830: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f  _index_orderby o
e840: 72 64 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20  rderBy =..      
e850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 55                (U
e860: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
e870: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
e880: 5f 6f 72 64 65 72 62 79 29 0d 0a 20 20 20 20 20  _orderby)..     
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8a0: 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f     Marshal.PtrTo
e8b0: 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65  Structure(pOffse
e8c0: 74 2c 20 6f 72 64 65 72 42 79 54 79 70 65 29 3b  t, orderByType);
e8d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e8e0: 20 20 20 20 6f 72 64 65 72 42 79 73 5b 69 4f 72      orderBys[iOr
e8f0: 64 65 72 42 79 5d 20 3d 20 6e 65 77 20 53 51 4c  derBy] = new SQL
e900: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28  iteIndexOrderBy(
e910: 6f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  orderBy);..     
e920: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e930: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c          if (incl
e940: 75 64 65 4f 75 74 70 75 74 29 0d 0a 20 20 20 20  udeOutput)..    
e950: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e960: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e970: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75  eIndexOutputs ou
e980: 74 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75  tputs = index.Ou
e990: 74 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  tputs;....      
e9a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75            if (ou
e9b0: 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  tputs == null)..
e9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9d0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
e9f0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
ea00: 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73  aintUsage[] cons
ea10: 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a  traintUsages =..
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea30: 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73      outputs.Cons
ea40: 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d  traintUsages;...
ea50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ea60: 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
ea70: 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  sages == null)..
ea80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea90: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
eaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
eab0: 79 70 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  ype constraintUs
eac0: 61 67 65 54 79 70 65 20 3d 20 74 79 70 65 6f 66  ageType = typeof
ead0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eae0: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
eaf0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
eb00: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
eb10: 69 6e 74 5f 75 73 61 67 65 29 3b 0d 0a 0d 0a 20  int_usage);.... 
eb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
eb30: 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61  nt sizeOfConstra
eb40: 69 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d  intUsageType = M
eb50: 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a  arshal.SizeOf(..
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb70: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73      constraintUs
eb80: 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  ageType);....   
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
eba0: 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e   (int iConstrain
ebb0: 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69  t = 0; iConstrai
ebc0: 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74  nt < nConstraint
ebd0: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29  ; iConstraint++)
ebe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ebf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ec00: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
ec10: 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65  pOffset = SQLite
ec20: 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f  Marshal.IntPtrFo
ec30: 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec50: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61    pConstraintUsa
ec60: 67 65 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  ge, iConstraint 
ec70: 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  * sizeOfConstrai
ec80: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
ec90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eca0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
ecb0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
ecc0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
ecd0: 74 5f 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69  t_usage constrai
ece0: 6e 74 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20  ntUsage =..     
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed00: 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65     (UnsafeNative
ed10: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
ed20: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
ed30: 5f 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20  _usage)..       
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed50: 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72       Marshal.Ptr
ed60: 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66  ToStructure(pOff
ed70: 73 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55  set, constraintU
ed80: 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  sageType);....  
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
edb0: 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20  es[iConstraint] 
edc0: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
edd0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
ede0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
edf0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
ee00: 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20  raintUsage);..  
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ee20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ee30: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
ee40: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
ee50: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
ee70: 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
ee80: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d  , sizeof(int));.
ee90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
eea0: 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78     outputs.Index
eeb0: 4e 75 6d 62 65 72 20 3d 20 53 51 4c 69 74 65 4d  Number = SQLiteM
eec0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
eed0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eee0: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f         pIndex, o
eef0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
ef00: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
ef10: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
ef20: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
ef30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ef40: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
ef50: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
ef60: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
ef70: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
ef80: 74 73 2e 49 6e 64 65 78 53 74 72 69 6e 67 20 3d  ts.IndexString =
ef90: 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74   SQLiteString.St
efa0: 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
efb0: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
efc0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
efd0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
efe0: 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  r(pIndex, offset
eff0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f000: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
f010: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
f020: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
f030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f040: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
f050: 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
f060: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f070: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4e         outputs.N
f080: 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
f090: 72 69 6e 67 20 3d 20 53 51 4c 69 74 65 4d 61 72  ring = SQLiteMar
f0a0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
f0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f0c0: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
f0d0: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
f0e0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
f0f0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f100: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
f110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f120: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
f130: 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69  f(int), sizeof(i
f140: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
f150: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
f160: 2e 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64  .OrderByConsumed
f170: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
f180: 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20  .ReadInt32(..   
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1a0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
f1b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f1c0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
f1d0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
f1e0: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f200: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
f210: 74 29 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  t), sizeof(doubl
f220: 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e));....        
f230: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
f240: 45 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20  EstimatedCost = 
f250: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
f260: 61 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  adDouble(..     
f270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
f280: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
f290: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f2a0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f2b0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f2c0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
f2e0: 73 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62  set, sizeof(doub
f2f0: 6c 65 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  le), sizeof(long
f300: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f310: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
f320: 74 73 2e 43 61 6e 55 73 65 45 73 74 69 6d 61 74  ts.CanUseEstimat
f330: 65 64 52 6f 77 73 28 29 29 0d 0a 20 20 20 20 20  edRows())..     
f340: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f360: 20 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61    outputs.Estima
f370: 74 65 64 52 6f 77 73 20 3d 20 53 51 4c 69 74 65  tedRows = SQLite
f380: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36  Marshal.ReadInt6
f390: 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4(..            
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
f3b0: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20  ex, offset);..  
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f3d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f3e0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f3f0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f400: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
f420: 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  set, sizeof(long
f430: 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  ), sizeof(int));
f440: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f450: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
f460: 43 61 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73  CanUseIndexFlags
f470: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
f480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f490: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
f4a0: 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 20 3d  uts.IndexFlags =
f4b0: 20 28 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61   (SQLiteIndexFla
f4c0: 67 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs)..           
f4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
f4e0: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
f4f0: 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
f500: 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  set);..         
f510: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f520: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
f530: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
f540: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
f550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f560: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
f570: 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f  zeof(int), sizeo
f580: 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20  f(long));....   
f590: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f5a0: 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 43  (outputs.CanUseC
f5b0: 6f 6c 75 6d 6e 73 55 73 65 64 28 29 29 0d 0a 20  olumnsUsed()).. 
f5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f5e0: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f        outputs.Co
f5f0: 6c 75 6d 6e 73 55 73 65 64 20 3d 20 53 51 4c 69  lumnsUsed = SQLi
f600: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
f610: 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
f620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
f630: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
f640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f650: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
f660: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
f670: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f6c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
f6d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
f6e0: 20 2f 2f 2f 20 50 6f 70 75 6c 61 74 65 73 20 74   /// Populates t
f6f0: 68 65 20 6f 75 74 70 75 74 73 20 6f 66 20 61 20  he outputs of a 
f700: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61  pre-allocated na
f710: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
f720: 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20  ex_info..       
f730: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 75   /// structure u
f740: 73 69 6e 67 20 61 6e 20 65 78 69 73 74 69 6e 67  sing an existing
f750: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
f760: 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
f770: 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
f780: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
f790: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f7a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
f7b0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
f7c0: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
f7d0: 20 54 68 65 20 65 78 69 73 74 69 6e 67 20 3c 73   The existing <s
f7e0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
f7f0: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
f800: 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
f810: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
f820: 20 74 68 65 20 6f 75 74 70 75 74 20 64 61 74 61   the output data
f830: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
f840: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f850: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
f860: 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
f870: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
f880: 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
f890: 72 20 74 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c  r to the pre-all
f8a0: 6f 63 61 74 65 64 20 6e 61 74 69 76 65 20 73 71  ocated native sq
f8b0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
f8c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
f8d0: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
f8e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f8f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
f900: 61 6d 20 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65  am name="include
f910: 49 6e 70 75 74 22 3e 0d 0a 20 20 20 20 20 20 20  Input">..       
f920: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
f930: 20 69 6e 63 6c 75 64 65 20 66 69 65 6c 64 73 20   include fields 
f940: 66 72 6f 6d 20 74 68 65 20 69 6e 70 75 74 73 20  from the inputs 
f950: 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e  portion of the n
f960: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
f970: 2f 2f 20 73 74 72 75 63 74 75 72 65 3b 20 6f 74  // structure; ot
f980: 68 65 72 77 69 73 65 2c 20 74 68 65 20 22 69 6e  herwise, the "in
f990: 70 75 74 22 20 66 69 65 6c 64 73 20 77 69 6c 6c  put" fields will
f9a0: 20 6e 6f 74 20 62 65 20 77 72 69 74 74 65 6e 2e   not be written.
f9b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
f9c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
f9d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f9e0: 76 6f 69 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a  void ToIntPtr(..
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
fa00: 74 65 49 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a  teIndex index,..
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
fa20: 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20  tr pIndex,..    
fa30: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63          bool inc
fa40: 6c 75 64 65 49 6e 70 75 74 0d 0a 20 20 20 20 20  ludeInput..     
fa50: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
fa60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fa70: 20 69 66 20 28 69 6e 64 65 78 20 3d 3d 20 6e 75   if (index == nu
fa80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
fa90: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
fab0: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f  teIndexOutputs o
fac0: 75 74 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f  utputs = index.O
fad0: 75 74 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  utputs;....     
fae0: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
faf0: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
fb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
fb10: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
fb20: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
fb30: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
fb40: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
fb50: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
fb60: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e       outputs.Con
fb70: 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a  straintUsages;..
fb80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fb90: 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
fba0: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
fbc0: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
fbd0: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 49      SQLiteIndexI
fbe0: 6e 70 75 74 73 20 69 6e 70 75 74 73 20 3d 20 6e  nputs inputs = n
fbf0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
fc00: 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
fc10: 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72  straint[] constr
fc20: 61 69 6e 74 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  aints = null;.. 
fc30: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
fc40: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
fc50: 6f 72 64 65 72 42 79 73 20 3d 20 6e 75 6c 6c 3b  orderBys = null;
fc60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fc70: 69 66 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74  if (includeInput
fc80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
fc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fca0: 20 20 69 6e 70 75 74 73 20 3d 20 69 6e 64 65 78    inputs = index
fcb0: 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20  .Inputs;....    
fcc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
fcd0: 69 6e 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  inputs == null).
fce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fcf0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
fd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd10: 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 69 6e  constraints = in
fd20: 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73  puts.Constraints
fd30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fd40: 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
fd50: 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ints == null).. 
fd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd70: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72                or
fd90: 64 65 72 42 79 73 20 3d 20 69 6e 70 75 74 73 2e  derBys = inputs.
fda0: 4f 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20  OrderBys;....   
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
fdc0: 28 6f 72 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c  (orderBys == nul
fdd0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
fde0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
fdf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fe00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fe10: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
fe20: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
fe30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fe40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fe50: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
fe60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fe70: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  int nConstraint 
fe80: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
fe90: 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78  ReadInt32(pIndex
fea0: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
feb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
fec0: 63 6c 75 64 65 49 6e 70 75 74 20 26 26 20 28 6e  cludeInput && (n
fed0: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f  Constraint != co
fee0: 6e 73 74 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68  nstraints.Length
fef0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
ff00: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
ff10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
ff20: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f  Constraint != co
ff30: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 2e 4c  nstraintUsages.L
ff40: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
ff50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
ff60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
ff70: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
ff80: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
ff90: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
ffa0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
ffb0: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
ffc0: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
ffd0: 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
ffe0: 64 65 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20  deInput)..      
fff0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10000 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
10010 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51  pConstraint = SQ
10020 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
10030 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
10040 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
10050 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
10060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10070 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74   int sizeOfConst
10080 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73  raintType = Mars
10090 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
100a0 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
100b0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
100c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
100d0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
100e0 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint));....     
100f0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
10100 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
10110 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
10120 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
10130 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10150 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10160 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
10170 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
10180 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
10190 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d  int constraint =
101a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
101b0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
101c0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
101d0 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
101e0 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  constraint(..   
101f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10200 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
10210 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74  ints[iConstraint
10220 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ]);....         
10230 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
10240 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74  al.StructureToPt
10250 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
10260 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
10270 74 72 61 69 6e 74 2c 20 53 51 4c 69 74 65 4d 61  traint, SQLiteMa
10280 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
10290 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
102a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102b0 70 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f  pConstraint, iCo
102c0 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f  nstraint * sizeO
102d0 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29  fConstraintType)
102e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
102f0 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65             false
10300 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10310 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10320 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10330 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
10340 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
10350 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
10360 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
10370 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
10380 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
10390 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
103a0 6e 4f 72 64 65 72 42 79 20 3d 20 69 6e 63 6c 75  nOrderBy = inclu
103b0 64 65 49 6e 70 75 74 20 3f 0d 0a 20 20 20 20 20  deInput ?..     
103c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
103d0 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
103e0 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
103f0 74 29 20 3a 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  t) : 0;....     
10400 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
10410 64 65 49 6e 70 75 74 20 26 26 20 28 6e 4f 72 64  deInput && (nOrd
10420 65 72 42 79 20 21 3d 20 6f 72 64 65 72 42 79 73  erBy != orderBys
10430 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
10440 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10450 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
10460 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
10470 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
10480 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
10490 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
104a0 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
104b0 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
104c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
104d0 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20 20 20  cludeInput)..   
104e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
104f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
10500 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51  tr pOrderBy = SQ
10510 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
10520 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f  IntPtr(pIndex, o
10530 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
10540 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
10550 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
10560 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
10570 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
10590 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
105a0 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
105b0 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20  _orderby));.... 
105c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
105d0 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72 42 79  or (int iOrderBy
105e0 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79 20 3c   = 0; iOrderBy <
105f0 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72 64 65   nOrderBy; iOrde
10600 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  rBy++)..        
10610 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
10630 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
10640 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
10650 5f 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42 79  _orderby orderBy
10660 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
10670 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10680 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
10690 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
106a0 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20  x_orderby(..    
106b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106c0 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
106d0 5b 69 4f 72 64 65 72 42 79 5d 29 3b 0d 0a 0d 0a  [iOrderBy]);....
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106f0 20 20 20 20 4d 61 72 73 68 61 6c 2e 53 74 72 75      Marshal.Stru
10700 63 74 75 72 65 54 6f 50 74 72 28 0d 0a 20 20 20  ctureToPtr(..   
10710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10720 20 20 20 20 20 6f 72 64 65 72 42 79 2c 20 53 51       orderBy, SQ
10730 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50  LiteMarshal.IntP
10740 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20  trForOffset(..  
10750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10760 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 2c 20        pOrderBy, 
10770 69 4f 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f  iOrderBy * sizeO
10780 66 4f 72 64 65 72 42 79 54 79 70 65 29 2c 0d 0a  fOrderByType),..
10790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107a0 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d          false);.
107b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
107c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
107d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
107e0 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
107f0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
10800 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
10810 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
10820 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50  ntPtr.Size, IntP
10830 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
10840 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
10850 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
10860 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
10870 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
10880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
10890 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
108a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
108b0 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
108c0 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61  ntUsageType = Ma
108d0 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
108e0 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
108f0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
10900 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
10910 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
10920 6e 74 5f 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20  nt_usage));.... 
10930 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
10940 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
10950 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
10960 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
10970 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
10980 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
109a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
109b0 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
109c0 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
109d0 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
109e0 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
109f0 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73           new Uns
10a00 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10a10 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
10a20 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
10a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10a40 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
10a50 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73  aintUsages[iCons
10a60 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20  traint]);....   
10a70 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72               Mar
10a80 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f  shal.StructureTo
10a90 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
10aa0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
10ab0 61 69 6e 74 55 73 61 67 65 2c 20 53 51 4c 69 74  aintUsage, SQLit
10ac0 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46  eMarshal.IntPtrF
10ad0 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
10ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
10af0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c  ConstraintUsage,
10b00 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
10b10 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
10b20 73 61 67 65 54 79 70 65 29 2c 0d 0a 20 20 20 20  sageType),..    
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
10b50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10b60 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
10b70 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
10b80 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
10b90 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10ba0 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
10bb0 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
10bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
10bd0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
10be0 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  eInt32(pIndex, o
10bf0 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
10c00 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10c10 49 6e 64 65 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d  IndexNumber);...
10c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
10c30 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
10c40 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
10c50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10c60 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
10c70 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
10c80 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
10c90 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
10ca0 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
10cb0 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
10ce0 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
10cf0 67 28 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 53  g(outputs.IndexS
10d00 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20  tring));....    
10d10 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
10d20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
10d30 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
10d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
10d50 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
10d60 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  e, sizeof(int));
10d70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10d80 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
10d90 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6a 75 73 74  // NOTE: We just
10da0 20 61 6c 6c 6f 63 61 74 65 64 20 74 68 65 20 49   allocated the I
10db0 6e 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64  ndexString field
10dc0 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 77 65 0d  ; therefore, we.
10dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
10de0 20 20 20 20 20 20 6e 65 65 64 20 74 6f 20 73 65        need to se
10df0 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20  t make sure the 
10e00 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53  NeedToFreeIndexS
10e10 74 72 69 6e 67 20 66 69 65 6c 64 0d 0a 20 20 20  tring field..   
10e20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
10e30 20 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 3b 20 68    is non-zero; h
10e40 6f 77 65 76 65 72 2c 20 77 65 20 61 72 65 20 6e  owever, we are n
10e50 6f 74 20 70 69 63 6b 79 20 61 62 6f 75 74 20 74  ot picky about t
10e60 68 65 20 65 78 61 63 74 0d 0a 20 20 20 20 20 20  he exact..      
10e70 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76        //       v
10e80 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  alue...         
10e90 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10ea0 20 20 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65     int needToFre
10eb0 65 49 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 6f  eIndexString = o
10ec0 75 74 70 75 74 73 2e 4e 65 65 64 54 6f 46 72 65  utputs.NeedToFre
10ed0 65 49 6e 64 65 78 53 74 72 69 6e 67 20 21 3d 20  eIndexString != 
10ee0 30 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0 ?..           
10ef0 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4e 65 65       outputs.Nee
10f00 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
10f10 6e 67 20 3a 20 31 3b 0d 0a 0d 0a 20 20 20 20 20  ng : 1;....     
10f20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
10f30 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
10f40 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
10f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10f60 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78   needToFreeIndex
10f70 53 74 72 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20  String);....    
10f80 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
10f90 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
10fa0 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
10fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
10fc0 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
10fd0 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  ), sizeof(int));
10fe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10ff0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
11000 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c  iteInt32(pIndex,
11010 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
11020 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
11030 73 2e 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65  s.OrderByConsume
11040 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  d);....         
11050 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
11060 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
11070 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
11080 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
11090 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69   sizeof(int), si
110a0 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0d 0a  zeof(double));..
110b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
110c0 20 28 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61   (outputs.Estima
110d0 74 65 64 43 6f 73 74 2e 48 61 73 56 61 6c 75 65  tedCost.HasValue
110e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
110f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11100 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
11110 57 72 69 74 65 44 6f 75 62 6c 65 28 70 49 6e 64  WriteDouble(pInd
11120 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  ex, offset,..   
11130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11140 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74   outputs.Estimat
11150 65 64 43 6f 73 74 2e 47 65 74 56 61 6c 75 65 4f  edCost.GetValueO
11160 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20  rDefault());..  
11170 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11180 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
11190 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
111a0 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
111b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
111c0 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
111d0 64 6f 75 62 6c 65 29 2c 20 73 69 7a 65 6f 66 28  double), sizeof(
111e0 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  long));....     
111f0 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
11200 74 73 2e 43 61 6e 55 73 65 45 73 74 69 6d 61 74  ts.CanUseEstimat
11210 65 64 52 6f 77 73 28 29 20 26 26 0d 0a 20 20 20  edRows() &&..   
11220 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
11230 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64 52 6f  puts.EstimatedRo
11240 77 73 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20  ws.HasValue)..  
11250 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11260 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
11270 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
11280 49 6e 74 36 34 28 70 49 6e 64 65 78 2c 20 6f 66  Int64(pIndex, of
11290 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
112a0 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
112b0 74 73 2e 45 73 74 69 6d 61 74 65 64 52 6f 77 73  ts.EstimatedRows
112c0 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75  .GetValueOrDefau
112d0 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  lt());..        
112e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
112f0 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
11300 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
11310 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
11320 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
11330 74 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c  t, sizeof(long),
11340 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
11350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
11360 20 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65   (outputs.CanUse
11370 49 6e 64 65 78 46 6c 61 67 73 28 29 20 26 26 0d  IndexFlags() &&.
11380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11390 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 46 6c   outputs.IndexFl
113a0 61 67 73 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20  ags.HasValue).. 
113b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
113c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
113d0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
113e0 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  eInt32(pIndex, o
113f0 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
11400 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 74 29             (int)
11410 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 46 6c 61  outputs.IndexFla
11420 67 73 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66  gs.GetValueOrDef
11430 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20  ault());..      
11440 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11450 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
11460 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
11470 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
11480 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
11490 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
114a0 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b  , sizeof(long));
114b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
114c0 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e 55  if (outputs.CanU
114d0 73 65 43 6f 6c 75 6d 6e 73 55 73 65 64 28 29 20  seColumnsUsed() 
114e0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
114f0 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75      outputs.Colu
11500 6d 6e 73 55 73 65 64 2e 48 61 73 56 61 6c 75 65  mnsUsed.HasValue
11510 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
11520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11530 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
11540 57 72 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65  WriteInt64(pInde
11550 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
11560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11570 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73 55  outputs.ColumnsU
11580 73 65 64 2e 47 65 74 56 61 6c 75 65 4f 72 44 65  sed.GetValueOrDe
11590 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20  fault());..     
115a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
115b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
115c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
115d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
115e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
115f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11620 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
11630 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  blic Properties.
11640 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
11650 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75   SQLiteIndexInpu
11660 74 73 20 69 6e 70 75 74 73 3b 0d 0a 20 20 20 20  ts inputs;..    
11670 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11680 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11690 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
116a0 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 22  LiteIndexInputs"
116b0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
116c0 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  nce containing..
116d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
116e0 69 6e 70 75 74 73 20 74 6f 20 74 68 65 20 3c 73  inputs to the <s
116f0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
11700 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65  ManagedModule.Be
11710 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20  stIndex" />..   
11720 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
11730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
11740 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11750 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
11760 6e 64 65 78 49 6e 70 75 74 73 20 49 6e 70 75 74  ndexInputs Input
11770 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
11780 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
11790 72 65 74 75 72 6e 20 69 6e 70 75 74 73 3b 20 7d  return inputs; }
117a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
117b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
117c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11800 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
11810 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74  e SQLiteIndexOut
11820 70 75 74 73 20 6f 75 74 70 75 74 73 3b 0d 0a 20  puts outputs;.. 
11830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
11840 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
11850 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
11860 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70  "SQLiteIndexOutp
11870 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  uts" /> object i
11880 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
11890 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
118a0 74 68 65 20 6f 75 74 70 75 74 73 20 66 72 6f 6d  the outputs from
118b0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
118c0 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
118d0 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
118e0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
118f0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
11900 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11910 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
11920 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
11930 74 73 20 4f 75 74 70 75 74 73 0d 0a 20 20 20 20  ts Outputs..    
11940 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11950 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
11960 6f 75 74 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20  outputs; }..    
11970 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
11980 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
11990 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
119a0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
119b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
119c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
119d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
119e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
119f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
11a00 6f 6e 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  on SQLiteVirtual
11a10 54 61 62 6c 65 20 42 61 73 65 20 43 6c 61 73 73  Table Base Class
11a20 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
11a30 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
11a40 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
11a50 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72  ts a managed vir
11a60 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
11a70 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 49 74 20 69  mentation.  It i
11a80 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 73  s..    /// not s
11a90 65 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64  ealed and should
11aa0 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
11ab0 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61  base class for a
11ac0 6e 79 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0d  ny user-defined.
11ad0 0a 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c  .    /// virtual
11ae0 20 74 61 62 6c 65 20 63 6c 61 73 73 65 73 20 69   table classes i
11af0 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61  mplemented in ma
11b00 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20  naged code...   
11b10 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11b20 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73  .    public clas
11b30 73 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  s SQLiteVirtualT
11b40 61 62 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20  able :..        
11b50 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76      ISQLiteNativ
11b60 65 48 61 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73  eHandle, IDispos
11b70 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c  able /* NOT SEAL
11b80 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20  ED */..    {..  
11b90 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
11ba0 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
11bb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
11bc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
11bd0 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69  /// The index wi
11be0 74 68 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f  thin the array o
11bf0 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64  f strings provid
11c00 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ed to the..     
11c10 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
11c20 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
11c30 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f  Module.Create" /
11c40 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  > and..        /
11c50 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
11c60 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
11c70 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  le.Connect" /> m
11c80 65 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e  ethods containin
11c90 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
11ca0 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d  // name of the m
11cb0 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69  odule implementi
11cc0 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  ng this virtual 
11cd0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
11ce0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11cf0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
11d00 63 6f 6e 73 74 20 69 6e 74 20 4d 6f 64 75 6c 65  const int Module
11d10 4e 61 6d 65 49 6e 64 65 78 20 3d 20 30 3b 0d 0a  NameIndex = 0;..
11d20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
11d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
11d80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11d90 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
11da0 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72  x within the arr
11db0 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
11dc0 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
11dd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11de0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11df0 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
11e00 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
11e10 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
11e20 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
11e30 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
11e40 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61  /> methods conta
11e50 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
11e60 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74     /// name of t
11e70 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74  he database cont
11e80 61 69 6e 69 6e 67 20 74 68 69 73 20 76 69 72 74  aining this virt
11e90 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
11ea0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11eb0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
11ec0 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 61  ate const int Da
11ed0 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 20  tabaseNameIndex 
11ee0 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 1;....        
11ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11f40 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11f50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
11f60 65 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74  e index within t
11f70 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  he array of stri
11f80 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
11f90 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
11fa0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
11fb0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
11fc0 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
11fd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
11fe0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
11ff0 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
12000 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
12010 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d   containing the.
12020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  .        /// nam
12030 65 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  e of the virtual
12040 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
12050 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12060 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
12070 20 63 6f 6e 73 74 20 69 6e 74 20 54 61 62 6c 65   const int Table
12080 4e 61 6d 65 49 6e 64 65 78 20 3d 20 32 3b 0d 0a  NameIndex = 2;..
12090 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
120a0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
120b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
12100 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
12110 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
12120 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12130 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
12140 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
12150 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
12160 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
12170 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12180 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
12190 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e  am name="argumen
121a0 74 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ts">..        //
121b0 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 61  / The original a
121c0 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20  rray of strings 
121d0 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d  provided to the.
121e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
121f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
12200 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65  anagedModule.Cre
12210 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20  ate" /> and..   
12220 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
12230 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
12240 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74  edModule.Connect
12250 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20  " /> methods... 
12260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
12270 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
12280 6c 69 63 20 53 51 4c 69 74 65 56 69 72 74 75 61  lic SQLiteVirtua
12290 6c 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  lTable(..       
122a0 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
122b0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20  guments..       
122c0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
122d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
122e0 68 69 73 2e 61 72 67 75 6d 65 6e 74 73 20 3d 20  his.arguments = 
122f0 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20  arguments;..    
12300 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
12310 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
12320 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12370 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
12380 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65  Public Propertie
12390 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
123a0 74 65 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75  te string[] argu
123b0 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20  ments;..        
123c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
123d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f         /// The o
123e0 72 69 67 69 6e 61 6c 20 61 72 72 61 79 20 6f 66  riginal array of
123f0 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65   strings provide
12400 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  d to the..      
12410 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
12420 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
12430 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e  odule.Create" />
12440 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
12450 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
12460 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
12470 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  e.Connect" /> me
12480 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20  thods...        
12490 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
124a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
124b0 69 72 74 75 61 6c 20 73 74 72 69 6e 67 5b 5d 20  irtual string[] 
124c0 41 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  Arguments..     
124d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
124e0 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
124f0 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
12500 61 72 67 75 6d 65 6e 74 73 3b 20 7d 0d 0a 20 20  arguments; }..  
12510 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12520 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12570 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12580 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
12590 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
125a0 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
125b0 74 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61  ting this virtua
125c0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
125d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
125e0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
125f0 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20   virtual string 
12600 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  ModuleName..    
12610 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12620 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
12630 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12640 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
12650 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
12660 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
12670 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20  g[] arguments = 
12680 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20  Arguments;....  
12690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
126a0 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20   ((arguments != 
126b0 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20  null) &&..      
126c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61                (a
126d0 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20  rguments.Length 
126e0 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65  > ModuleNameInde
126f0 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x))..           
12700 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12710 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12720 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 4d 6f 64  rn arguments[Mod
12730 75 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a  uleNameIndex];..
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12750 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12760 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
12770 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12790 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
127a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
127b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
127c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
127d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
127e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
127f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
12830 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
12840 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
12850 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74  he database cont
12860 61 69 6e 69 6e 67 20 74 68 69 73 20 76 69 72 74  aining this virt
12870 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
12880 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12890 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
128a0 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
128b0 67 20 44 61 74 61 62 61 73 65 4e 61 6d 65 0d 0a  g DatabaseName..
128c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
128d0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
128e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
128f0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
12900 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
12920 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
12930 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
12940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12950 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
12960 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
12970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12980 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
12990 67 74 68 20 3e 20 44 61 74 61 62 61 73 65 4e 61  gth > DatabaseNa
129a0 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20  meIndex))..     
129b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
129c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129d0 20 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e    return argumen
129e0 74 73 5b 44 61 74 61 62 61 73 65 4e 61 6d 65 49  ts[DatabaseNameI
129f0 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20  ndex];..        
12a00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12a10 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
12a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12a30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12a40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
12a50 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
12a60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12a70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12a80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ad0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12ae0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12af0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
12b00 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74 75  ame of the virtu
12b10 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
12b20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12b30 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
12b40 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
12b50 20 54 61 62 6c 65 4e 61 6d 65 0d 0a 20 20 20 20   TableName..    
12b60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12b70 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
12b80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12b90 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
12ba0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
12bb0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
12bc0 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20  g[] arguments = 
12bd0 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20  Arguments;....  
12be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12bf0 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20   ((arguments != 
12c00 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20  null) &&..      
12c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61                (a
12c20 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20  rguments.Length 
12c30 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  > TableNameIndex
12c40 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12c50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12c60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12c70 6e 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c  n arguments[Tabl
12c80 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20  eNameIndex];..  
12c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12cb0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
12cc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12ce0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
12cf0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12d00 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12d10 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12d20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12d70 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
12d80 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 3b  LiteIndex index;
12d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
12da0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12db0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
12dc0 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
12dd0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
12de0 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61  nce containing a
12df0 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ll the..        
12e00 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65  /// data for the
12e10 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70   inputs and outp
12e20 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20  uts relating to 
12e30 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
12e40 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 2f  index..        /
12e50 2f 2f 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20  // selection... 
12e60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
12e70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
12e80 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51  ublic virtual SQ
12e90 4c 69 74 65 49 6e 64 65 78 20 49 6e 64 65 78 0d  LiteIndex Index.
12ea0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
12eb0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68          get { Ch
12ec0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
12ed0 65 74 75 72 6e 20 69 6e 64 65 78 3b 20 7d 0d 0a  eturn index; }..
12ee0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12ef0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
12f00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
12f60 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
12f70 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
12f80 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
12f90 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
12fa0 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c  od should normal
12fb0 6c 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68  ly be used by th
12fc0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
12fd0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
12fe0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
12ff0 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
13000 68 6f 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d  hod in order to.
13010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 65 72  .        /// per
13020 66 6f 72 6d 20 69 6e 64 65 78 20 73 65 6c 65 63  form index selec
13030 74 69 6f 6e 20 62 61 73 65 64 20 6f 6e 20 74 68  tion based on th
13040 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 70 72  e constraints pr
13050 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20  ovided by the.. 
13060 20 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74         /// SQLit
13070 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
13080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
13090 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
130a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
130b0 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  ="index">..     
130c0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
130d0 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
130e0 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
130f0 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  tance containing
13100 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20   all the..      
13110 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74    /// data for t
13120 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75  he inputs and ou
13130 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74  tputs relating t
13140 6f 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f  o index selectio
13150 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
13160 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
13170 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
13180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
13190 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
131a0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
131b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
131c0 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
131d0 75 61 6c 20 62 6f 6f 6c 20 42 65 73 74 49 6e 64  ual bool BestInd
131e0 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex(..           
131f0 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
13200 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
13210 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
13220 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
13230 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
13240 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69            this.i
13250 6e 64 65 78 20 3d 20 69 6e 64 65 78 3b 0d 0a 0d  ndex = index;...
13260 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
13270 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
13280 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
132e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
132f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74  ..        /// At
13300 74 65 6d 70 74 73 20 74 6f 20 72 65 63 6f 72 64  tempts to record
13310 20 74 68 65 20 72 65 6e 61 6d 69 6e 67 20 6f 66   the renaming of
13320 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
13330 6c 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  le associated.. 
13340 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
13350 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
13360 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
13370 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13380 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
13390 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
133a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
133b0 6e 65 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  new name for the
133c0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
133d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
133e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
133f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
13400 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
13410 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e  ro upon success.
13420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13430 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
13440 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
13450 20 62 6f 6f 6c 20 52 65 6e 61 6d 65 28 0d 0a 20   bool Rename(.. 
13460 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
13470 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  g name..        
13480 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
13490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
134a0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
134b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
134c0 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20   ((arguments != 
134d0 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20  null) &&..      
134e0 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d            (argum
134f0 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61  ents.Length > Ta
13500 62 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a  bleNameIndex))..
13510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
13530 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61  rguments[TableNa
13540 6d 65 49 6e 64 65 78 5d 20 3d 20 6e 61 6d 65 3b  meIndex] = name;
13550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13560 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
13570 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
13580 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
13590 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
135a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
135b0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
135c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
135d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
13610 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
13620 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
13630 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  dle Members..   
13640 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74       private Int
13650 50 74 72 20 6e 61 74 69 76 65 48 61 6e 64 6c 65  Ptr nativeHandle
13660 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
13670 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13680 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
13690 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c  e underlying SQL
136a0 69 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c  ite native handl
136b0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
136c0 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
136d0 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  /// object insta
136e0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
136f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13700 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
13710 74 75 61 6c 20 49 6e 74 50 74 72 20 4e 61 74 69  tual IntPtr Nati
13720 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20  veHandle..      
13730 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13740 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
13750 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 6e  osed(); return n
13760 61 74 69 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a  ativeHandle; }..
13770 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65              inte
13780 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61 74 69 76  rnal set { nativ
13790 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b  eHandle = value;
137a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
137b0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
137c0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
137d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13810 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13820 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
13830 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ble Members..   
13840 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13850 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13860 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73  Disposes of this
13870 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
13880 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
13890 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
138a0 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
138b0 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20  ispose()..      
138c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
138d0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
138e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e  .            GC.
138f0 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
13900 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
13910 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
13920 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
13930 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13970 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13980 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
13990 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
139a0 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
139b0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
139c0 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
139d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
139e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
139f0 68 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72  hrows an <see cr
13a00 65 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73  ef="ObjectDispos
13a10 65 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20  edException" /> 
13a20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a  if this object..
13a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
13a40 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69  ance has been di
13a50 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
13a60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13a70 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
13a80 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f   void CheckDispo
13a90 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a  sed() /* throw *
13aa0 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  /..        {..#i
13ab0 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f  f THROW_ON_DISPO
13ac0 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  SED..           
13ad0 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a   if (disposed)..
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
13b00 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44  hrow new ObjectD
13b10 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e  isposedException
13b20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
13b30 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
13b40 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
13b50 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
13b60 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
13b70 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
13b80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13bd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13be0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13bf0 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
13c00 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
13c10 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
13c20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13c30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
13c40 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e  m name="disposin
13c50 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
13c60 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
13c70 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
13c80 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68  g called from th
13c90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
13ca0 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73  see cref="Dispos
13cb0 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  e()" /> method. 
13cc0 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65   Zero if this me
13cd0 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61  thod is being ca
13ce0 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lled..        //
13cf0 2f 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c  / from the final
13d00 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  izer...        /
13d10 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
13d20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
13d30 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70  irtual void Disp
13d40 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
13d50 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ng)..        {..
13d60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13d70 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
13d80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13d90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20             //if 
13da0 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
13db0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b               //{
13dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13dd0 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f    //    ////////
13de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
13e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13e10 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d      // dispose m
13e20 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
13e30 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
13e40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e70 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
13e80 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20        //}....   
13e90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
13ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ec0 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
13ed0 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
13ee0 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
13ef0 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
13f00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
13f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f30 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
13f40 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
13f50 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
13f60 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13f70 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
13f80 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
13f90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13fe0 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74      #region Dest
13ff0 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  ructor..        
14000 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14010 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c         /// Final
14020 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74  izes this object
14030 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
14040 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14050 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c  y>..        ~SQL
14060 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28  iteVirtualTable(
14070 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
14080 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
14090 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  e(false);..     
140a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
140b0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
140c0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
140d0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
140e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14120 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
14130 6e 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  n SQLiteVirtualT
14140 61 62 6c 65 43 75 72 73 6f 72 20 42 61 73 65 20  ableCursor Base 
14150 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
14160 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
14170 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
14180 72 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65  resents a manage
14190 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
141a0 63 75 72 73 6f 72 20 69 6d 70 6c 65 6d 65 6e 74  cursor implement
141b0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ation...    /// 
141c0 49 74 20 69 73 20 6e 6f 74 20 73 65 61 6c 65 64  It is not sealed
141d0 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75   and should be u
141e0 73 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20  sed as the base 
141f0 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20  class for any.. 
14200 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69     /// user-defi
14210 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
14220 65 20 63 75 72 73 6f 72 20 63 6c 61 73 73 65 73  e cursor classes
14230 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20   implemented in 
14240 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20  managed code... 
14250 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14260 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c  >..    public cl
14270 61 73 73 20 53 51 4c 69 74 65 56 69 72 74 75 61  ass SQLiteVirtua
14280 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 3a 0d 0a  lTableCursor :..
14290 20 20 20 20 20 20 20 20 20 20 20 20 49 53 51 4c              ISQL
142a0 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c  iteNativeHandle,
142b0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20   IDisposable /* 
142c0 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20  NOT SEALED */.. 
142d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
142e0 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20  egion Protected 
142f0 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
14300 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
14320 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
14330 6e 74 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 69  nts an invalid i
14340 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71 75 65  nteger row seque
14350 6e 63 65 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20  nce number...   
14360 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14370 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ry>..        pro
14380 74 65 63 74 65 64 20 73 74 61 74 69 63 20 72 65  tected static re
14390 61 64 6f 6e 6c 79 20 69 6e 74 20 49 6e 76 61 6c  adonly int Inval
143a0 69 64 52 6f 77 49 6e 64 65 78 20 3d 20 30 3b 0d  idRowIndex = 0;.
143b0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
143c0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
143d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14410 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
14420 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
14430 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  e Data..        
14440 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14450 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66         /// The f
14460 69 65 6c 64 20 68 6f 6c 64 73 20 74 68 65 20 69  ield holds the i
14470 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71 75 65  nteger row seque
14480 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f 72 20 74  nce number for t
14490 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 0d 0a  he current row..
144a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e          /// poin
144b0 74 65 64 20 74 6f 20 62 79 20 74 68 69 73 20 63  ted to by this c
144c0 75 72 73 6f 72 20 6f 62 6a 65 63 74 20 69 6e 73  ursor object ins
144d0 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
144e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
144f0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
14500 69 6e 74 20 72 6f 77 49 6e 64 65 78 3b 0d 0a 20  int rowIndex;.. 
14510 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
14520 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
14530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14570 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
14580 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
14590 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
145a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
145b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
145c0 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
145d0 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
145e0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
145f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14600 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
14610 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
14620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
14630 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
14640 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
14650 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
14660 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
14670 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
14680 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
14690 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
146a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
146b0 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
146c0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
146d0 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rsor(..         
146e0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
146f0 54 61 62 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20  Table table..   
14700 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
14710 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
14720 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
14730 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 61           this.ta
14740 62 6c 65 20 3d 20 74 61 62 6c 65 3b 0d 0a 20 20  ble = table;..  
14750 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14760 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14770 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
147c0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
147d0 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
147e0 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
147f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14800 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
14810 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
14820 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e  e of this class.
14830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14840 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14850 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
14860 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
14870 6f 72 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  or()..        {.
14880 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77  .            row
14890 49 6e 64 65 78 20 3d 20 49 6e 76 61 6c 69 64 52  Index = InvalidR
148a0 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  owIndex;..      
148b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
148c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
148d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
148e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
148f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14920 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
14930 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  blic Properties.
14940 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
14950 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
14960 62 6c 65 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20  ble table;..    
14970 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14980 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14990 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
149a0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
149b0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
149c0 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
149d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
149e0 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  h this object in
149f0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
14a00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14a10 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
14a20 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69  virtual SQLiteVi
14a30 72 74 75 61 6c 54 61 62 6c 65 20 54 61 62 6c 65  rtualTable Table
14a40 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
14a50 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
14a60 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
14a70 72 65 74 75 72 6e 20 74 61 62 6c 65 3b 20 7d 0d  return table; }.
14a80 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
14a90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
14aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
14ae0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
14af0 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72   int indexNumber
14b00 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
14b10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14b20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65    /// Number use
14b30 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69  d to help identi
14b40 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  fy the selected 
14b50 69 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c  index.  This val
14b60 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20  ue will..       
14b70 20 2f 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20   /// be set via 
14b80 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46  the <see cref="F
14b90 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
14ba0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14bb0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14bc0 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
14bd0 6c 20 69 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65  l int IndexNumbe
14be0 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  r..        {..  
14bf0 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
14c00 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
14c10 20 72 65 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d   return indexNum
14c20 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ber; }..        
14c30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
14c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
14c90 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 69  private string i
14ca0 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20  ndexString;..   
14cb0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
14cc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
14cd0 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68  String used to h
14ce0 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
14cf0 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
14d00 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
14d10 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  l..        /// b
14d20 65 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73  e set via the <s
14d30 65 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22  ee cref="Filter"
14d40 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
14d50 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14d60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
14d70 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69  lic virtual stri
14d80 6e 67 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a  ng IndexString..
14d90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14da0 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
14db0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
14dc0 74 75 72 6e 20 69 6e 64 65 78 53 74 72 69 6e 67  turn indexString
14dd0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
14de0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14e40 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
14e50 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20  [] values;..    
14e60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14e70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14e80 68 65 20 76 61 6c 75 65 73 20 75 73 65 64 20 74  he values used t
14e90 6f 20 66 69 6c 74 65 72 20 74 68 65 20 72 6f 77  o filter the row
14ea0 73 20 72 65 74 75 72 6e 65 64 20 76 69 61 20 74  s returned via t
14eb0 68 69 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63  his cursor objec
14ec0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
14ed0 6e 73 74 61 6e 63 65 2e 20 20 54 68 69 73 20 76  nstance.  This v
14ee0 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 73 65 74  alue will be set
14ef0 20 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72   via the <see cr
14f00 65 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 0d 0a  ef="Filter" />..
14f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
14f20 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
14f30 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14f40 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
14f50 75 61 6c 20 53 51 4c 69 74 65 56 61 6c 75 65 5b  ual SQLiteValue[
14f60 5d 20 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  ] Values..      
14f70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14f80 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
14f90 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 76  osed(); return v
14fa0 61 6c 75 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20  alues; }..      
14fb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
14fc0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
14fd0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
15020 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
15030 6f 74 65 63 74 65 64 20 4d 65 74 68 6f 64 73 0d  otected Methods.
15040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
15050 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15060 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
15070 70 65 72 73 69 73 74 20 74 68 65 20 73 70 65 63  persist the spec
15080 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
15090 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e  "SQLiteValue" />
150a0 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
150b0 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 73 20 69   /// instances i
150c0 6e 20 6f 72 64 65 72 20 74 6f 20 6d 61 6b 65 20  n order to make 
150d0 74 68 65 6d 20 61 76 61 69 6c 61 62 6c 65 20 61  them available a
150e0 66 74 65 72 20 74 68 65 0d 0a 20 20 20 20 20 20  fter the..      
150f0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
15100 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
15110 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e  odule.Filter" />
15120 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 2e   method returns.
15130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15140 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15150 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
15160 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
15170 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
15180 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
15190 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e  "SQLiteValue" />
151a0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
151b0 73 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20  s to be..       
151c0 20 2f 2f 2f 20 70 65 72 73 69 73 74 65 64 2e 0d   /// persisted..
151d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
151e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
151f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
15200 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
15210 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65  mber of <see cre
15220 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
15230 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
15240 63 65 73 20 74 68 61 74 20 77 65 72 65 0d 0a 20  ces that were.. 
15250 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 63 63 65         /// succe
15260 73 73 66 75 6c 6c 79 20 70 65 72 73 69 73 74 65  ssfully persiste
15270 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
15280 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
15290 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
152a0 72 74 75 61 6c 20 69 6e 74 20 54 72 79 50 65 72  rtual int TryPer
152b0 73 69 73 74 56 61 6c 75 65 73 28 0d 0a 20 20 20  sistValues(..   
152c0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
152d0 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20  alue[] values.. 
152e0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
152f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15300 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
15310 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
15320 20 20 20 20 69 66 20 28 76 61 6c 75 65 73 20 21      if (values !
15330 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
15340 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15350 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
15360 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61 6c  (SQLiteValue val
15370 75 65 20 69 6e 20 76 61 6c 75 65 73 29 0d 0a 20  ue in values).. 
15380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
15390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
153a0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
153b0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
153c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153d0 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
153e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153f0 20 20 20 69 66 20 28 76 61 6c 75 65 2e 50 65 72     if (value.Per
15400 73 69 73 74 28 29 29 0d 0a 20 20 20 20 20 20 20  sist())..       
15410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15420 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20   result++;..    
15430 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
15440 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
15450 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15460 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
15470 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
15480 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
15490 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
154a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
154e0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
154f0 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Public Methods..
15500 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15510 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15520 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73  // This method s
15530 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62  hould normally b
15540 65 20 75 73 65 64 20 62 79 20 74 68 65 0d 0a 20  e used by the.. 
15550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
15560 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
15570 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65  agedModule.Filte
15580 72 22 20 2f 3e 20 6d 65 74 68 6f 64 20 69 6e 20  r" /> method in 
15590 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20 20 20 20  order to..      
155a0 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d 20 66 69    /// perform fi
155b0 6c 74 65 72 69 6e 67 20 6f 66 20 74 68 65 20 72  ltering of the r
155c0 65 73 75 6c 74 20 72 6f 77 73 20 61 6e 64 2f 6f  esult rows and/o
155d0 72 20 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20  r to record the 
155e0 66 69 6c 74 65 72 69 6e 67 0d 0a 20 20 20 20 20  filtering..     
155f0 20 20 20 2f 2f 2f 20 63 72 69 74 65 72 69 61 20     /// criteria 
15600 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
15610 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
15620 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
15630 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15640 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15650 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62   name="indexNumb
15660 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
15670 2f 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f  / Number used to
15680 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
15690 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
156a0 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
156b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
156c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
156d0 65 3d 22 69 6e 64 65 78 53 74 72 69 6e 67 22 3e  e="indexString">
156e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74  ..        /// St
156f0 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c  ring used to hel
15700 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73  p identify the s
15710 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a  elected index...
15720 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15730 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
15740 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
15750 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20  alues">..       
15760 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20   /// The values 
15770 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f  corresponding to
15780 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20   each column in 
15790 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
157a0 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
157b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
157c0 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
157d0 6c 20 76 6f 69 64 20 46 69 6c 74 65 72 28 0d 0a  l void Filter(..
157e0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
157f0 69 6e 64 65 78 4e 75 6d 62 65 72 2c 0d 0a 20 20  indexNumber,..  
15800 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
15810 20 69 6e 64 65 78 53 74 72 69 6e 67 2c 0d 0a 20   indexString,.. 
15820 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
15830 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 0d  eValue[] values.
15840 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
15850 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15860 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
15870 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
15880 20 20 20 20 20 20 20 69 66 20 28 28 76 61 6c 75         if ((valu
15890 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a  es != null) &&..
158a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
158b0 28 54 72 79 50 65 72 73 69 73 74 56 61 6c 75 65  (TryPersistValue
158c0 73 28 76 61 6c 75 65 73 29 20 21 3d 20 76 61 6c  s(values) != val
158d0 75 65 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20  ues.Length))..  
158e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
158f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
15900 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63  ow new SQLiteExc
15910 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  eption(..       
15920 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 61               "fa
15930 69 6c 65 64 20 74 6f 20 70 65 72 73 69 73 74 20  iled to persist 
15940 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 76 61 6c 75  one or more valu
15950 65 73 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  es");..         
15960 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15970 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 4e 75      this.indexNu
15980 6d 62 65 72 20 3d 20 69 6e 64 65 78 4e 75 6d 62  mber = indexNumb
15990 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er;..           
159a0 20 74 68 69 73 2e 69 6e 64 65 78 53 74 72 69 6e   this.indexStrin
159b0 67 20 3d 20 69 6e 64 65 78 53 74 72 69 6e 67 3b  g = indexString;
159c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
159d0 69 73 2e 76 61 6c 75 65 73 20 3d 20 76 61 6c 75  is.values = valu
159e0 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  es;..        }..
159f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
15a50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15a60 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
15a70 65 73 20 74 68 65 20 69 6e 74 65 67 65 72 20 72  es the integer r
15a80 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62  ow sequence numb
15a90 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  er for the curre
15aa0 6e 74 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20  nt row...       
15ab0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
15ad0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
15ae0 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
15af0 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d  row sequence num
15b00 62 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72  ber for the curr
15b10 65 6e 74 20 72 6f 77 20 2d 4f 52 2d 20 7a 65 72  ent row -OR- zer
15b20 6f 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o if..        //
15b30 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  / it cannot be d
15b40 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
15b50 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
15b60 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
15b70 69 63 20 76 69 72 74 75 61 6c 20 69 6e 74 20 47  ic virtual int G
15b80 65 74 52 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20  etRowIndex()..  
15b90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15ba0 20 20 20 20 20 72 65 74 75 72 6e 20 72 6f 77 49       return rowI
15bb0 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ndex;..        }
15bc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
15bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
15c20 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15c30 20 20 20 20 20 20 2f 2f 2f 20 41 64 6a 75 73 74        /// Adjust
15c40 73 20 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f  s the integer ro
15c50 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65  w sequence numbe
15c60 72 20 73 6f 20 74 68 61 74 20 69 74 20 72 65 66  r so that it ref
15c70 65 72 73 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ers to the..    
15c80 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20 72 6f 77      /// next row
15c90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15ca0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15cb0 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
15cc0 6c 20 76 6f 69 64 20 4e 65 78 74 52 6f 77 49 6e  l void NextRowIn
15cd0 64 65 78 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dex()..        {
15ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 6f  ..            ro
15cf0 77 49 6e 64 65 78 2b 2b 3b 0d 0a 20 20 20 20 20  wIndex++;..     
15d00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
15d10 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
15d20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
15d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d40 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
15d70 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
15d80 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64  SQLiteNativeHand
15d90 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
15da0 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50      private IntP
15db0 74 72 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b  tr nativeHandle;
15dc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
15dd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
15de0 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
15df0 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69   underlying SQLi
15e00 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65  te native handle
15e10 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
15e20 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
15e30 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
15e40 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
15e50 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15e60 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
15e70 75 61 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76  ual IntPtr Nativ
15e80 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  eHandle..       
15e90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15ea0 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
15eb0 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61  sed(); return na
15ec0 74 69 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20  tiveHandle; }.. 
15ed0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72             inter
15ee0 6e 61 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65  nal set { native
15ef0 48 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20  Handle = value; 
15f00 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
15f10 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
15f20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
15f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
15f80 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
15f90 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
15fa0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15fb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
15fc0 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20  isposes of this 
15fd0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
15fe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15ff0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16000 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
16010 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20  spose()..       
16020 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16030 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
16040 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53              GC.S
16050 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
16060 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
16070 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
16080 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
16090 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
160a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
160e0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
160f0 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
16100 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  " Members..     
16110 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
16120 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20  disposed;..     
16130 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16150 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
16160 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
16170 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
16180 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
16190 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
161a0 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
161b0 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
161c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
161d0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
161e0 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
161f0 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
16200 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
16210 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
16220 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
16230 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
16240 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
16250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
16260 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
16270 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
16280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16290 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
162a0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
162b0 75 72 73 6f 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20  ursor).Name);.. 
162c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
162d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
162e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
162f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16330 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
16340 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16350 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65       /// Dispose
16360 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  s of this object
16370 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
16380 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16390 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
163a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73  <param name="dis
163b0 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20  posing">..      
163c0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
163d0 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
163e0 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72   being called fr
163f0 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
16400 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
16410 69 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74  ispose()" /> met
16420 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68  hod.  Zero if th
16430 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69  is method is bei
16440 6e 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20  ng called..     
16450 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20     /// from the 
16460 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20  finalizer...    
16470 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
16480 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
16490 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64  ted virtual void
164a0 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
164b0 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
164c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
164d0 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
164e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
164f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16500 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29  //if (disposing)
16510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16520 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20    //{..         
16530 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
16540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16560 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
16570 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70     //    // disp
16580 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
16590 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
165a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
165b0 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  /    ///////////
165c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
165e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a             //}..
165f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16600 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16620 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
16630 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
16640 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
16650 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
16660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16670 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
166a0 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
166b0 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
166c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
166d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
166e0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
166f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16740 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
16750 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20   Destructor..   
16760 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16770 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16780 46 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f  Finalizes this o
16790 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
167a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
167b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
167c0 20 7e 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54   ~SQLiteVirtualT
167d0 61 62 6c 65 43 75 72 73 6f 72 28 29 0d 0a 20 20  ableCursor()..  
167e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
167f0 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
16800 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  se);..        }.
16810 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
16820 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
16830 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
16840 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16890 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51  .    #region ISQ
168a0 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
168b0 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   Interface..    
168c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
168d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65     /// This inte
168e0 72 66 61 63 65 20 72 65 70 72 65 73 65 6e 74 73  rface represents
168f0 20 61 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65   a native handle
16900 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
16910 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20   SQLite core..  
16920 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a    /// library...
16930 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16940 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  y>..    public i
16950 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65  nterface ISQLite
16960 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
16970 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
16980 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16990 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
169a0 76 65 20 68 61 6e 64 6c 65 20 76 61 6c 75 65 2e  ve handle value.
169b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
169c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
169d0 20 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48    IntPtr NativeH
169e0 61 6e 64 6c 65 20 7b 20 67 65 74 3b 20 7d 0d 0a  andle { get; }..
169f0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
16a00 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
16a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
16a60 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4d  #region ISQLiteM
16a70 61 6e 61 67 65 64 4d 6f 64 75 6c 65 20 49 6e 74  anagedModule Int
16a80 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20  erface..    /// 
16a90 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
16aa0 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61 63  // This interfac
16ab0 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 76  e represents a v
16ac0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70  irtual table imp
16ad0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 72 69 74  lementation writ
16ae0 74 65 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20  ten in..    /// 
16af0 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20  managed code... 
16b00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16b10 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e  >..    public in
16b20 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65 4d  terface ISQLiteM
16b30 61 6e 61 67 65 64 4d 6f 64 75 6c 65 0d 0a 20 20  anagedModule..  
16b40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
16b50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16b60 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
16b70 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  non-zero if the 
16b80 73 63 68 65 6d 61 20 66 6f 72 20 74 68 65 20 76  schema for the v
16b90 69 72 74 75 61 6c 20 74 61 62 6c 65 20 68 61 73  irtual table has
16ba0 20 62 65 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f   been..        /
16bb0 2f 2f 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20  // declared...  
16bc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16bd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f  ary>..        bo
16be0 6f 6c 20 44 65 63 6c 61 72 65 64 20 7b 20 67 65  ol Declared { ge
16bf0 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t; }....        
16c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16c50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
16c70 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f  turns the name o
16c80 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 61 73 20  f the module as 
16c90 69 74 20 77 61 73 20 72 65 67 69 73 74 65 72 65  it was registere
16ca0 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  d with the SQLit
16cb0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
16cc0 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
16cd0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16ce0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 73 74  ary>..        st
16cf0 72 69 6e 67 20 4e 61 6d 65 20 7b 20 67 65 74 3b  ring Name { get;
16d00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
16d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
16d60 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16d70 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
16d80 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
16d90 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
16da0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16db0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
16dc0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
16dd0 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
16de0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
16df0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16e00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
16e10 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
16e20 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n">..        ///
16e30 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
16e40 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
16e50 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
16e60 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20  ance associated 
16e70 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  with..        //
16e80 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  / the virtual ta
16e90 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
16ea0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
16eb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
16ec0 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
16ed0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
16ee0 54 68 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d  The native user-
16ef0 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73  data pointer ass
16f00 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
16f10 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20  s module, as it 
16f20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  was..        ///
16f30 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
16f40 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
16f50 72 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61  rary when the na
16f60 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74  tive module inst
16f70 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
16f80 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a  / was created...
16f90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
16fa0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
16fb0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
16fc0 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20  rguments">..    
16fd0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75      /// The modu
16fe0 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73  le name, databas
16ff0 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20  e name, virtual 
17000 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20  table name, and 
17010 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20  all other..     
17020 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
17030 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 43   passed to the C
17040 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
17050 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  BLE statement...
17060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17070 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17080 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
17090 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
170a0 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
170b0 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
170c0 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
170d0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
170e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
170f0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
17100 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
17110 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
17120 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
17130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
17140 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
17150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17160 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17170 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17180 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  error">..       
17190 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72   /// Upon failur
171a0 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  e, this paramete
171b0 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
171c0 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e  ed to contain an
171d0 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
171e0 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  /// message...  
171f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17200 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17210 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
17220 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
17230 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
17240 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
17250 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
17260 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
17270 6f 72 43 6f 64 65 20 43 72 65 61 74 65 28 0d 0a  orCode Create(..
17280 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
17290 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
172a0 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20  nection,  /* in 
172b0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
172c0 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
172d0 74 61 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ta,           /*
172e0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
172f0 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67      string[] arg
17300 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20  uments,         
17310 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17320 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
17330 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
17340 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d  able, /* out */.
17350 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
17360 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20   string error   
17370 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75             /* ou
17380 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
17390 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
173a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173b0 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
173f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17410 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
17420 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
17430 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
17440 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
17450 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
17460 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  le.xConnect" /> 
17470 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
17480 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
174a0 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
174b0 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  tion">..        
174c0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
174d0 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
174e0 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ion" /> object i
174f0 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
17500 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
17510 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c   /// the virtual
17520 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
17530 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
17540 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
17550 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44  m name="pClientD
17560 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ata">..        /
17570 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75 73  // The native us
17580 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20  er-data pointer 
17590 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
175a0 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20  this module, as 
175b0 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20  it was..        
175c0 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f 20  /// provided to 
175d0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
175e0 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68 65  library when the
175f0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69   native module i
17600 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20  nstance..       
17610 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65 64   /// was created
17620 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17630 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
17640 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17650 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20  ="arguments">.. 
17660 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
17670 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61  odule name, data
17680 62 61 73 65 20 6e 61 6d 65 2c 20 76 69 72 74 75  base name, virtu
17690 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61  al table name, a
176a0 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20  nd all other..  
176b0 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65        /// argume
176c0 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74 68  nts passed to th
176d0 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
176e0 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
176f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17700 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
17710 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17720 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
17730 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
17740 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
17750 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
17760 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
17770 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
17780 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
17790 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
177a0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
177b0 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ce associated wi
177c0 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
177d0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
177e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
177f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
17800 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17810 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
17820 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69      /// Upon fai
17830 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d  lure, this param
17840 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
17850 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
17860 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20 20   an error..     
17870 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d     /// message..
17880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17890 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
178a0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
178b0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
178c0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
178d0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
178e0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
178f0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
17900 45 72 72 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63  ErrorCode Connec
17910 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
17920 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
17930 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a   connection,  /*
17940 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
17950 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65      IntPtr pClie
17960 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20  ntData,         
17970 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17980 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
17990 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20   arguments,     
179a0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
179b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
179c0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
179d0 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74  le table, /* out
179e0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
179f0 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
17a00 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  r              /
17a10 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
17a20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
17a30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17a80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
17a90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17aa0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
17ab0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
17ac0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
17ad0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
17ae0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
17af0 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
17b00 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
17b10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
17b20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17b30 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17b40 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
17b50 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
17b60 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
17b70 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
17b80 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
17b90 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
17ba0 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
17bb0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
17bc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17bd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17be0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
17bf0 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
17c00 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
17c10 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
17c20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
17c30 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74  containing all t
17c40 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
17c50 64 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70  data for the inp
17c60 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20  uts and outputs 
17c70 72 65 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64 65  relating to inde
17c80 78 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20  x selection...  
17c90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17ca0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17cb0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
17cc0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
17cd0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
17ce0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
17cf0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
17d00 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
17d10 6f 72 43 6f 64 65 20 42 65 73 74 49 6e 64 65 78  orCode BestIndex
17d20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
17d30 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
17d40 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a  e table, /* in *
17d50 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  /..            S
17d60 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78  QLiteIndex index
17d70 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 2c 20           /* in, 
17d80 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
17d90 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
17da0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17df0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17e00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
17e10 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
17e20 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
17e30 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
17e40 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
17e50 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
17e60 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
17e70 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
17e80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17e90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17ea0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
17eb0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
17ec0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
17ed0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
17ee0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
17ef0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
17f00 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
17f10 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
17f20 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
17f30 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
17f40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
17f50 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
17f60 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
17f70 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
17f80 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
17f90 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
17fa0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
17fb0 43 6f 64 65 20 44 69 73 63 6f 6e 6e 65 63 74 28  Code Disconnect(
17fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
17fd0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17fe0 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d   table /* in */.
17ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
18000 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18050 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
18060 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18070 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
18080 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
18090 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
180a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
180b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
180c0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
180d0 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f  estroy" /> metho
180e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
180f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18100 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18110 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
18120 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
18130 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
18140 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
18150 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
18160 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
18170 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
18180 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
18190 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
181a0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
181b0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
181c0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
181d0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
181e0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
181f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
18200 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
18210 65 45 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72  eErrorCode Destr
18220 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
18230 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
18240 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20  ble table /* in 
18250 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
18260 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
18270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
182c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
182d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
182e0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
182f0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
18300 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18310 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
18320 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
18330 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f  .xOpen" /> metho
18340 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18350 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18360 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18370 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
18380 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
18390 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
183a0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
183b0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
183c0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
183d0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
183e0 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
183f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18400 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
18410 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
18420 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
18430 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
18440 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
18450 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
18460 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
18470 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
18480 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18490 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
184a0 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
184b0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
184c0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
184d0 20 77 69 74 68 20 74 68 65 20 6e 65 77 6c 79 20   with the newly 
184e0 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74  opened virtual t
184f0 61 62 6c 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20  able cursor...  
18500 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18510 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
18520 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
18530 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
18540 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
18550 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
18560 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
18570 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
18580 6f 72 43 6f 64 65 20 4f 70 65 6e 28 0d 0a 20 20  orCode Open(..  
18590 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
185a0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
185b0 6c 65 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  le,           /*
185c0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
185d0 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 56 69      ref SQLiteVi
185e0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
185f0 20 63 75 72 73 6f 72 20 2f 2a 20 6f 75 74 20 2a   cursor /* out *
18600 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
18610 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18670 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18680 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
18690 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
186a0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
186b0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
186c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
186d0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
186e0 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f  xClose" /> metho
186f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18700 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18710 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18720 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
18730 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
18740 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
18750 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
18760 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
18770 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
18780 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
18790 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
187a0 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
187b0 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
187c0 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
187d0 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
187e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
187f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
18800 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
18810 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
18820 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
18830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18840 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
18850 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
18860 65 20 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  e Close(..      
18870 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
18880 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
18890 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  ursor /* in */..
188a0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
188b0 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18900 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
18910 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18920 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
18930 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
18940 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
18950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18960 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
18970 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
18980 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
18990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
189a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
189b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
189c0 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
189d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
189e0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
189f0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
18a00 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
18a10 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
18a20 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
18a30 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
18a40 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
18a50 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
18a60 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
18a70 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
18a80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18a90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18aa0 6e 61 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65  name="indexNumbe
18ab0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
18ac0 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
18ad0 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
18ae0 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
18af0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18b00 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18b10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18b20 3d 22 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d  ="indexString">.
18b30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72  .        /// Str
18b40 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ing used to help
18b50 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
18b60 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
18b70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18b80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18b90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
18ba0 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  lues">..        
18bb0 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63  /// The values c
18bc0 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
18bd0 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74  each column in t
18be0 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
18bf0 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
18c00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18c10 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
18c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
18c30 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
18c40 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
18c50 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
18c60 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
18c70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 46 69 6c  iteErrorCode Fil
18c80 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
18c90 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
18ca0 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
18cb0 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  r, /* in */..   
18cc0 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64           int ind
18cd0 65 78 4e 75 6d 62 65 72 2c 20 20 20 20 20 20 20  exNumber,       
18ce0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
18cf0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
18d00 73 74 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69  string indexStri
18d10 6e 67 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  ng,             
18d20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
18d30 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c         SQLiteVal
18d40 75 65 5b 5d 20 76 61 6c 75 65 73 20 20 20 20 20  ue[] values     
18d50 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
18d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
18d70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
18dd0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
18de0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
18df0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
18e00 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
18e10 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
18e20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
18e30 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
18e40 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Next" /> method.
18e50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18e60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18e70 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
18e80 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
18e90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
18ea0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
18eb0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
18ec0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
18ed0 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
18ee0 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
18ef0 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
18f00 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
18f10 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
18f20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
18f30 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
18f40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18f50 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
18f60 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
18f70 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
18f80 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
18f90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
18fa0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18fb0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18fc0 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
18fd0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
18fe0 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
18ff0 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  or /* in */..   
19000 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
19010 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19070 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19080 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
19090 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
190a0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
190b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
190c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
190d0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20  iveModule.xEof" 
190e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
190f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19100 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19110 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
19120 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
19130 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
19140 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
19150 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
19160 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a  bject instance..
19170 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
19180 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
19190 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65  previously opene
191a0 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
191b0 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20  cursor to be..  
191c0 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d        /// used..
191d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
191e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
191f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
19200 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
19210 72 6f 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f  ro if no more ro
19220 77 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ws are available
19230 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65  ; zero otherwise
19240 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19250 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19260 20 20 20 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20     bool Eof(..  
19270 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
19280 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
19290 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20  or cursor /* in 
192a0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
192b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
192c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19300 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19310 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19320 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19330 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
19340 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
19350 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
19360 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
19370 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
19380 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74  .xColumn" /> met
19390 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
193a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
193b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
193c0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
193d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
193e0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
193f0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
19400 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
19410 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
19420 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
19430 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
19440 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
19450 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
19460 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
19470 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
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 70 61  .        /// <pa
194a0 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78  ram name="contex
194b0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
194c0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
194d0 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 22 20 2f  SQLiteContext" /
194e0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
194f0 65 20 74 6f 20 62 65 20 75 73 65 64 20 66 6f 72  e to be used for
19500 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65  ..        /// re
19510 74 75 72 6e 69 6e 67 20 74 68 65 20 73 70 65 63  turning the spec
19520 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c  ified column val
19530 75 65 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ue to the SQLite
19540 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
19550 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19560 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
19570 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
19580 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
19590 2f 2f 2f 20 54 68 65 20 7a 65 72 6f 2d 62 61 73  /// The zero-bas
195a0 65 64 20 69 6e 64 65 78 20 63 6f 72 72 65 73 70  ed index corresp
195b0 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 63 6f  onding to the co
195c0 6c 75 6d 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20  lumn containing 
195d0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
195e0 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
195f0 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  urned...        
19600 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19610 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
19620 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
19630 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
19640 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
19650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
19660 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
19670 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19680 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20   Column(..      
19690 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
196a0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
196b0 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  ursor, /* in */.
196c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
196d0 69 74 65 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65  iteContext conte
196e0 78 74 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  xt,           /*
196f0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
19700 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 20 20      int index   
19710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19720 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
19730 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
19740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
197a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
197b0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
197c0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
197d0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
197e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
197f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
19800 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77  ativeModule.xRow
19810 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  Id" /> method...
19820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
19830 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
19840 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19850 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
19860 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
19870 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
19880 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
19890 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
198a0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
198b0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
198c0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
198d0 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
198e0 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
198f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
19900 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
19910 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19920 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19930 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20  me="rowId">..   
19940 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
19950 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
19960 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
19970 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
19980 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20  n the unique..  
19990 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65        /// intege
199a0 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72  r row identifier
199b0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
199c0 20 72 6f 77 20 66 6f 72 20 74 68 65 20 73 70 65   row for the spe
199d0 63 69 66 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a  cified cursor...
199e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
199f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
19a00 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19a10 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
19a20 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
19a30 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
19a40 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
19a50 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
19a60 72 72 6f 72 43 6f 64 65 20 52 6f 77 49 64 28 0d  rrorCode RowId(.
19a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
19a80 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
19a90 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a  ursor cursor, /*
19aa0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
19ab0 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
19ac0 49 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20  Id              
19ad0 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
19ae0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
19af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
19b50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
19b60 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
19b70 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
19b80 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
19b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19ba0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
19bb0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
19bc0 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
19bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19be0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
19bf0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19c00 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
19c10 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
19c20 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
19c30 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
19c40 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
19c50 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
19c60 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
19c70 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
19c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19c90 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
19ca0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
19cb0 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20  alues">..       
19cc0 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
19cd0 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
19ce0 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a  iteValue" /> obj
19cf0 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 63 6f  ect instances co
19d00 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
19d10 20 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72    /// the new or
19d20 20 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e   modified column
19d30 20 76 61 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e   values, if any.
19d40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19d50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
19d60 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19d70 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
19d80 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
19d90 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
19da0 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
19db0 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
19dc0 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20  he unique..     
19dd0 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72     /// integer r
19de0 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f  ow identifier fo
19df0 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 20 77  r the row that w
19e00 61 73 20 69 6e 73 65 72 74 65 64 2c 20 69 66 20  as inserted, if 
19e10 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  any...        //
19e20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19e30 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
19e40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
19e50 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
19e60 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
19e70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
19e80 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
19e90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 55  QLiteErrorCode U
19ea0 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
19eb0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
19ec0 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
19ed0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
19ee0 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b      SQLiteValue[
19ef0 5d 20 76 61 6c 75 65 73 2c 20 20 20 20 20 2f 2a  ] values,     /*
19f00 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
19f10 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
19f20 49 64 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  Id            /*
19f30 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
19f40 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
19f50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
19fb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
19fc0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
19fd0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
19fe0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
19ff0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1a000 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1a010 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e  odule.xBegin" />
1a020 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1a030 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1a040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a050 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1a060 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1a070 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1a080 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1a090 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1a0a0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1a0b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1a0c0 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1a0d0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1a0e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1a0f0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1a100 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1a110 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1a120 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1a130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1a140 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a150 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a160 20 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20   Begin(..       
1a170 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1a180 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
1a190 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1a1a0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1a1b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a200 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1a210 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1a220 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1a230 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1a240 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1a250 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1a260 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1a270 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
1a280 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1a290 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1a2a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1a2b0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1a2c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1a2d0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1a2e0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1a2f0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1a300 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1a310 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1a320 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1a330 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1a340 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1a350 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1a360 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1a370 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1a380 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1a390 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1a3a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1a3b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53  QLiteErrorCode S
1a3c0 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ync(..          
1a3d0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1a3e0 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
1a3f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1a400 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a450 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1a460 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1a470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1a480 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
1a490 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
1a4a0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1a4b0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
1a4c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1a4d0 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
1a4e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a4f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a500 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a510 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1a520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a530 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1a540 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1a550 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1a560 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1a570 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1a580 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1a590 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1a5a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a5b0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1a5c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1a5d0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1a5e0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1a5f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1a600 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1a610 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f  LiteErrorCode Co
1a620 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20  mmit(..         
1a630 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
1a640 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69  Table table /* i
1a650 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1a660 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a690 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1a6c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1a6d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1a6e0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1a6f0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1a700 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1a710 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1a720 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1a730 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e  le.xRollback" />
1a740 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1a750 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1a760 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a770 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1a780 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1a790 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1a7a0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1a7b0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1a7c0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1a7d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1a7e0 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1a7f0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1a800 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1a810 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1a820 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1a830 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1a840 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1a850 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1a860 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a870 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a880 20 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20   Rollback(..    
1a890 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1a8a0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1a8b0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1a8c0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1a8d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1a8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a920 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1a930 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1a940 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1a950 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1a960 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1a970 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1a980 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1a990 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
1a9a0 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
1a9b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a9c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1a9d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a9e0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
1a9f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1aa00 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1aa10 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1aa20 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1aa30 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1aa40 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
1aa50 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
1aa60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1aa70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1aa80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1aa90 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d  argumentCount">.
1aaa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1aab0 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
1aac0 65 6e 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63  ents to the func
1aad0 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68  tion being sough
1aae0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1aaf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ab00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ab10 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
1ab20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
1ab30 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  of the function 
1ab40 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20  being sought... 
1ab50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ab60 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ab70 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75   <param name="fu
1ab80 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20  nction">..      
1ab90 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
1aba0 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
1abb0 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
1abc0 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
1abd0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1abe0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1abf0 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  eFunction" /> ob
1ac00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65  ject instance re
1ac10 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 0d 0a 20  sponsible for.. 
1ac20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
1ac30 6d 65 6e 74 69 6e 67 20 74 68 65 20 73 70 65 63  menting the spec
1ac40 69 66 69 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d  ified function..
1ac50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1ac60 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1ac70 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1ac80 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20  pClientData">.. 
1ac90 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
1aca0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
1acb0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
1acc0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
1acd0 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
1ace0 20 2f 2f 2f 20 6e 61 74 69 76 65 20 75 73 65 72   /// native user
1acf0 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73  -data pointer as
1ad00 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
1ad10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ad20 6d 72 65 66 20 6e 61 6d 65 3d 22 66 75 6e 63 74  mref name="funct
1ad30 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  ion" />...      
1ad40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1ad50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1ad60 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1ad70 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
1ad80 68 65 20 73 70 65 63 69 66 69 65 64 20 66 75 6e  he specified fun
1ad90 63 74 69 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b  ction was found;
1ada0 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e   zero otherwise.
1adb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1adc0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1add0 20 20 62 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74    bool FindFunct
1ade0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
1adf0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1ae00 61 62 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 2f  able table,    /
1ae10 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1ae20 20 20 20 20 20 69 6e 74 20 61 72 67 75 6d 65 6e       int argumen
1ae30 74 43 6f 75 6e 74 2c 20 20 20 20 20 20 20 20 20  tCount,         
1ae40 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1ae50 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
1ae60 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 20  ame,            
1ae70 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1ae80 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53             ref S
1ae90 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75  QLiteFunction fu
1aea0 6e 63 74 69 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a  nction, /* out *
1aeb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1aec0 65 66 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  ef IntPtr pClien
1aed0 74 44 61 74 61 20 20 20 20 20 20 20 2f 2a 20 6f  tData       /* o
1aee0 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1aef0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1af00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1af10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1af50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1af60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1af70 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1af80 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1af90 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1afa0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1afb0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1afc0 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
1afd0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1afe0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1aff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b000 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
1b010 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b020 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1b030 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1b040 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1b050 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
1b060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
1b070 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
1b080 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1b090 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1b0a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1b0b0 6e 61 6d 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d  name="newName">.
1b0c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1b0d0 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72 20 74 68   new name for th
1b0e0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
1b0f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b100 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1b110 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1b120 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1b130 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1b140 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1b150 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1b160 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1b170 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6e 61 6d  eErrorCode Renam
1b180 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1b190 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1b1a0 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20  le table, /* in 
1b1b0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1b1c0 73 74 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 20  string newName  
1b1d0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
1b1e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1b1f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b240 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1b250 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1b260 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1b270 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1b280 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1b290 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1b2a0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1b2b0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1b2c0 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20  .xSavepoint" /> 
1b2d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1b2e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1b2f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b300 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
1b310 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b320 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1b330 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1b340 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1b350 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
1b360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
1b370 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
1b380 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1b390 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1b3a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1b3b0 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22  name="savepoint"
1b3c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b3d0 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65  his is an intege
1b3e0 72 20 69 64 65 6e 74 69 66 69 65 72 20 75 6e 64  r identifier und
1b3f0 65 72 20 77 68 69 63 68 20 74 68 65 20 74 68 65  er which the the
1b400 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f   current state o
1b410 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
1b420 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1b430 20 73 68 6f 75 6c 64 20 62 65 20 73 61 76 65 64   should be saved
1b440 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b450 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1b460 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1b470 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1b480 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1b490 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1b4a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1b4b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1b4c0 74 65 45 72 72 6f 72 43 6f 64 65 20 53 61 76 65  teErrorCode Save
1b4d0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
1b4e0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1b4f0 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
1b500 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1b510 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e      int savepoin
1b520 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  t             /*
1b530 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1b540 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1b550 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b5a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1b5b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b5c0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1b5d0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1b5e0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1b5f0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1b600 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1b610 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f  dule.xRelease" /
1b620 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1b630 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1b640 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b650 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
1b660 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1b670 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1b680 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1b690 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
1b6a0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1b6b0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
1b6c0 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
1b6d0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
1b6e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1b6f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1b700 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e  m name="savepoin
1b710 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1b720 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65   This is an inte
1b730 67 65 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69  ger used to indi
1b740 63 61 74 65 20 74 68 61 74 20 61 6e 79 20 73 61  cate that any sa
1b750 76 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20  ved states with 
1b760 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
1b770 69 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74  identifier great
1b780 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  er than or equal
1b790 20 74 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20   to this should 
1b7a0 62 65 20 64 65 6c 65 74 65 64 20 62 79 20 74 68  be deleted by th
1b7b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
1b7c0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1b7d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b7e0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1b7f0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1b800 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1b810 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1b820 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1b830 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1b840 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1b850 72 6f 72 43 6f 64 65 20 52 65 6c 65 61 73 65 28  rorCode Release(
1b860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1b870 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1b880 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f   table, /* in */
1b890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
1b8a0 74 20 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20  t savepoint     
1b8b0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1b8c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1b8d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b920 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1b930 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1b940 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1b950 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1b960 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1b970 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1b980 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1b990 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1b9a0 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d  RollbackTo" /> m
1b9b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1b9c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b9d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b9e0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1b9f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ba00 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1ba10 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1ba20 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1ba30 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1ba40 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1ba50 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1ba60 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1ba70 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ba80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1ba90 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e  ame="savepoint">
1baa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1bab0 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  is is an integer
1bac0 20 69 64 65 6e 74 69 66 69 65 72 20 75 73 65 64   identifier used
1bad0 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 73 70   to specify a sp
1bae0 65 63 69 66 69 63 20 73 61 76 65 64 0d 0a 20 20  ecific saved..  
1baf0 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 20        /// state 
1bb00 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
1bb10 74 61 62 6c 65 20 66 6f 72 20 69 74 20 74 6f 20  table for it to 
1bb20 72 65 73 74 6f 72 65 20 69 74 73 65 6c 66 20 62  restore itself b
1bb30 61 63 6b 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20  ack to, which.. 
1bb40 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c         /// shoul
1bb50 64 20 61 6c 73 6f 20 68 61 76 65 20 74 68 65 20  d also have the 
1bb60 65 66 66 65 63 74 20 6f 66 20 64 65 6c 65 74 69  effect of deleti
1bb70 6e 67 20 61 6c 6c 20 73 61 76 65 64 20 73 74 61  ng all saved sta
1bb80 74 65 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20  tes with an..   
1bb90 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72       /// integer
1bba0 20 69 64 65 6e 74 69 66 69 65 72 20 67 72 65 61   identifier grea
1bbb0 74 65 72 20 74 68 61 6e 20 74 68 69 73 20 6f 6e  ter than this on
1bbc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1bbd0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1bbe0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1bbf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1bc00 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1bc10 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1bc20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1bc30 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1bc40 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c  iteErrorCode Rol
1bc50 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
1bc60 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1bc70 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1bc80 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1bc90 20 20 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f        int savepo
1bca0 69 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20  int             
1bcb0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1bcc0 20 20 20 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d        );..    }.
1bcd0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1bce0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1bd40 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 20 53  n SQLiteMemory S
1bd50 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20  tatic Class..   
1bd60 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1bd70 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
1bd80 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74  ss contains stat
1bd90 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20  ic methods that 
1bda0 61 72 65 20 75 73 65 64 20 74 6f 20 61 6c 6c 6f  are used to allo
1bdb0 63 61 74 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6d  cate,..    /// m
1bdc0 61 6e 69 70 75 6c 61 74 65 2c 20 61 6e 64 20 66  anipulate, and f
1bdd0 72 65 65 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72  ree native memor
1bde0 79 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  y provided by th
1bdf0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1be00 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
1be10 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1be20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1be30 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f  class SQLiteMemo
1be40 72 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ry..    {..     
1be50 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
1be60 74 65 20 44 61 74 61 0d 0a 23 69 66 20 54 52 41  te Data..#if TRA
1be70 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d  CK_MEMORY_BYTES.
1be80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1be90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1bea0 2f 2f 2f 20 54 68 69 73 20 6f 62 6a 65 63 74 20  /// This object 
1beb0 69 6e 73 74 61 6e 63 65 20 69 73 20 75 73 65 64  instance is used
1bec0 20 74 6f 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20   to synchronize 
1bed0 61 63 63 65 73 73 20 74 6f 20 74 68 65 20 6f 74  access to the ot
1bee0 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  her..        ///
1bef0 20 73 74 61 74 69 63 20 66 69 65 6c 64 73 20 6f   static fields o
1bf00 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
1bf10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1bf20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
1bf30 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
1bf40 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
1bf50 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d  new object();...
1bf60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1bfc0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1bfd0 20 20 20 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c     /// The total
1bfe0 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74   number of outst
1bff0 61 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79  anding memory by
1c000 74 65 73 20 61 6c 6c 6f 63 61 74 65 64 20 62 79  tes allocated by
1c010 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
1c020 2f 2f 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  // class using t
1c030 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1c040 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
1c050 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1c060 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1c070 20 73 74 61 74 69 63 20 69 6e 74 20 62 79 74 65   static int byte
1c080 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 0d 0a 20  sAllocated;.... 
1c090 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0b0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
1c0e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c0f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c100 20 2f 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d   /// The maximum
1c110 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74   number of outst
1c120 61 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79  anding memory by
1c130 74 65 73 20 65 76 65 72 20 61 6c 6c 6f 63 61 74  tes ever allocat
1c140 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  ed by..        /
1c150 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20 75 73  // this class us
1c160 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 63  ing the SQLite c
1c170 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1c180 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1c190 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
1c1a0 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74  ivate static int
1c1b0 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c   maximumBytesAll
1c1c0 6f 63 61 74 65 64 3b 0d 0a 23 65 6e 64 69 66 0d  ocated;..#endif.
1c1d0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
1c1e0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
1c1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c230 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c240 20 20 23 72 65 67 69 6f 6e 20 4d 65 6d 6f 72 79    #region Memory
1c250 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 48 65 6c 70   Allocation Help
1c260 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1c270 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1c280 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1c290 6c 6c 6f 63 61 74 65 73 20 61 74 20 6c 65 61 73  llocates at leas
1c2a0 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
1c2b0 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
1c2c0 6f 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  of native memory
1c2d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
1c2e0 61 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  a the SQLite cor
1c2f0 65 20 6c 69 62 72 61 72 79 20 73 71 6c 69 74 65  e library sqlite
1c300 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74  3_malloc() funct
1c310 69 6f 6e 20 61 6e 64 20 72 65 74 75 72 6e 73 0d  ion and returns.
1c320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
1c330 20 72 65 73 75 6c 74 69 6e 67 20 6e 61 74 69 76   resulting nativ
1c340 65 20 70 6f 69 6e 74 65 72 2e 20 20 49 66 20 74  e pointer.  If t
1c350 68 65 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f  he TRACK_MEMORY_
1c360 42 59 54 45 53 20 6f 70 74 69 6f 6e 0d 0a 20 20  BYTES option..  
1c370 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 65 6e        /// was en
1c380 61 62 6c 65 64 20 61 74 20 63 6f 6d 70 69 6c 65  abled at compile
1c390 2d 74 69 6d 65 2c 20 61 64 6a 75 73 74 73 20 74  -time, adjusts t
1c3a0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
1c3b0 65 73 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20 20  es currently..  
1c3c0 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61        /// alloca
1c3d0 74 65 64 20 62 79 20 74 68 69 73 20 63 6c 61 73  ted by this clas
1c3e0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1c3f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1c400 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1c410 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20  ame="size">..   
1c420 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
1c430 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
1c440 61 6c 6c 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20  allocate...     
1c450 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1c460 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1c470 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1c480 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1c490 6f 69 6e 74 65 72 20 74 68 61 74 20 70 6f 69 6e  ointer that poin
1c4a0 74 73 20 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66  ts to a block of
1c4b0 20 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65   memory of at le
1c4c0 61 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ast the..       
1c4d0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 73   /// specified s
1c4e0 69 7a 65 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72  ize -OR- <see cr
1c4f0 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22  ef="IntPtr.Zero"
1c500 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 6d 6f 72   /> if the memor
1c510 79 20 63 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20  y could..       
1c520 20 2f 2f 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f   /// not be allo
1c530 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
1c540 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1c550 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1c560 74 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c  tatic IntPtr All
1c570 6f 63 61 74 65 28 69 6e 74 20 73 69 7a 65 29 0d  ocate(int size).
1c580 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1c590 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1c5a0 4d 65 6d 6f 72 79 20 3d 20 55 6e 73 61 66 65 4e  Memory = UnsafeN
1c5b0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1c5c0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65  ite3_malloc(size
1c5d0 29 3b 0d 0a 0d 0a 23 69 66 20 54 52 41 43 4b 5f  );....#if TRACK_
1c5e0 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20  MEMORY_BYTES..  
1c5f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4d            if (pM
1c600 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e  emory != IntPtr.
1c610 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1c620 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c630 20 20 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53        int blockS
1c640 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f  ize = Size(pMemo
1c650 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
1c660 20 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63          if (bloc
1c670 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20  kSize > 0)..    
1c680 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6a0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1c6b0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1c6c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6e0 20 20 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65     bytesAllocate
1c6f0 64 20 2b 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d  d += blockSize;.
1c700 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1c710 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
1c720 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3e 20  ytesAllocated > 
1c730 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f  maximumBytesAllo
1c740 63 61 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20  cated)..        
1c750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c760 20 20 20 20 6d 61 78 69 6d 75 6d 42 79 74 65 73      maximumBytes
1c770 41 6c 6c 6f 63 61 74 65 64 20 3d 20 62 79 74 65  Allocated = byte
1c780 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 20 20 20  sAllocated;..   
1c790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c7b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1c7c0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
1c7d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1c7e0 72 6e 20 70 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20  rn pMemory;..   
1c7f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1c800 20 20 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 2f 2f 2f  ////////////////
1c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1c850 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1c860 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1c870 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
1c880 20 74 68 65 20 61 63 74 75 61 6c 20 73 69 7a 65   the actual size
1c890 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
1c8a0 64 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 74  d memory block t
1c8b0 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
1c8c0 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c 79 20   was previously 
1c8d0 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
1c8e0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c  e <see cref="All
1c8f0 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ocate" /> method
1c900 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
1c910 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1c920 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
1c930 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1c940 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c950 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d  param name="pMem
1c960 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ory">..        /
1c970 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1c980 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d  inter to the mem
1c990 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f  ory block previo
1c9a0 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
1c9b0 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
1c9c0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41  /// <see cref="A
1c9d0 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68  llocate" /> meth
1c9e0 6f 64 20 6f 72 20 74 68 65 20 53 51 4c 69 74 65  od or the SQLite
1c9f0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
1ca00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1ca10 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1ca20 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1ca30 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74       /// The act
1ca40 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20 62 79 74  ual size, in byt
1ca50 65 73 2c 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72  es, of the memor
1ca60 79 20 62 6c 6f 63 6b 20 73 70 65 63 69 66 69 65  y block specifie
1ca70 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20 20  d via the..     
1ca80 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f     /// native po
1ca90 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  inter...        
1caa0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1cab0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1cac0 74 61 74 69 63 20 69 6e 74 20 53 69 7a 65 28 49  tatic int Size(I
1cad0 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a  ntPtr pMemory)..
1cae0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1caf0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1cb00 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1cb10 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65  urn UnsafeNative
1cb20 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
1cb30 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
1cb40 72 6f 70 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 23  rop(pMemory);..#
1cb50 65 6c 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52  elif TRACK_MEMOR
1cb60 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20  Y_BYTES..       
1cb70 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1cb80 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f 6b       // HACK: Ok
1cb90 2c 20 77 65 20 63 61 6e 6e 6f 74 20 64 65 74 65  , we cannot dete
1cba0 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f  rmine the size o
1cbb0 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f  f the memory blo
1cbc0 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck;..           
1cbd0 20 2f 2f 20 20 20 20 20 20 20 74 68 65 72 65 66   //       theref
1cbe0 6f 72 65 2c 20 6a 75 73 74 20 74 72 61 63 6b 20  ore, just track 
1cbf0 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f 63 61  number of alloca
1cc00 74 69 6f 6e 73 20 69 6e 73 74 65 61 64 2e 0d 0a  tions instead...
1cc10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1cc20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1cc30 72 6e 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49  rn (pMemory != I
1cc40 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 20 31 20  ntPtr.Zero) ? 1 
1cc50 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  : 0;..#else..   
1cc60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1cc70 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  0;..#endif..    
1cc80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1cc90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1cca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cce0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1ccf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
1cd00 72 65 65 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c  rees a memory bl
1cd10 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  ock previously o
1cd20 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
1cd30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1cd40 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1cd50 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 49  e" /> method.  I
1cd60 66 20 74 68 65 20 54 52 41 43 4b 5f 4d 45 4d 4f  f the TRACK_MEMO
1cd70 52 59 5f 42 59 54 45 53 20 6f 70 74 69 6f 6e 0d  RY_BYTES option.
1cd80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73  .        /// was
1cd90 20 65 6e 61 62 6c 65 64 20 61 74 20 63 6f 6d 70   enabled at comp
1cda0 69 6c 65 2d 74 69 6d 65 2c 20 61 64 6a 75 73 74  ile-time, adjust
1cdb0 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
1cdc0 62 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79 0d  bytes currently.
1cdd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
1cde0 6f 63 61 74 65 64 20 62 79 20 74 68 69 73 20 63  ocated by this c
1cdf0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
1ce00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1ce10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ce20 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22  m name="pMemory"
1ce30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ce40 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
1ce50 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20  r to the memory 
1ce60 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79  block previously
1ce70 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
1ce80 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1ce90 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
1cea0 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
1ceb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1cec0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
1ced0 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1cee0 64 20 46 72 65 65 28 49 6e 74 50 74 72 20 70 4d  d Free(IntPtr pM
1cef0 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20 20  emory)..        
1cf00 7b 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d  {..#if TRACK_MEM
1cf10 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20  ORY_BYTES..     
1cf20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d 6f         if (pMemo
1cf30 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ry != IntPtr.Zer
1cf40 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1cf50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1cf60 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a 65     int blockSize
1cf70 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79 29   = Size(pMemory)
1cf80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1cf90 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53 69       if (blockSi
1cfa0 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  ze > 0)..       
1cfb0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1cfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfd0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1cfe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cff0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d010 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 2d  bytesAllocated -
1d020 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 20 20  = blockSize;..  
1d030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d040 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1d050 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1d060 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
1d070 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1d080 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1d090 2e 73 71 6c 69 74 65 33 5f 66 72 65 65 28 70 4d  .sqlite3_free(pM
1d0a0 65 6d 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  emory);..       
1d0b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d100 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1d110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1d120 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65          /// Free
1d130 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  s a memory block
1d140 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
1d150 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51  ined from the SQ
1d160 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20  Lite core..     
1d170 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 77     /// library w
1d180 69 74 68 6f 75 74 20 61 64 6a 75 73 74 69 6e 67  ithout adjusting
1d190 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
1d1a0 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79 20 61  ytes currently a
1d1b0 6c 6c 6f 63 61 74 65 64 0d 0a 20 20 20 20 20 20  llocated..      
1d1c0 20 20 2f 2f 2f 20 62 79 20 74 68 69 73 20 63 6c    /// by this cl
1d1d0 61 73 73 2e 20 20 54 68 69 73 20 69 73 20 75 73  ass.  This is us
1d1e0 65 66 75 6c 20 77 68 65 6e 20 64 65 61 6c 69 6e  eful when dealin
1d1f0 67 20 77 69 74 68 20 62 6c 6f 63 6b 73 20 6f 66  g with blocks of
1d200 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
1d210 20 2f 2f 2f 20 74 68 61 74 20 77 65 72 65 20 6e   /// that were n
1d220 6f 74 20 61 6c 6c 6f 63 61 74 65 64 20 75 73 69  ot allocated usi
1d230 6e 67 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  ng this class...
1d240 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d250 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d260 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1d270 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20  "pMemory">..    
1d280 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1d290 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1d2a0 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70  e memory block p
1d2b0 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
1d2c0 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
1d2d0 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20       /// SQLite 
1d2e0 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
1d2f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1d300 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
1d310 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
1d320 46 72 65 65 55 6e 74 72 61 63 6b 65 64 28 49 6e  FreeUntracked(In
1d330 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20  tPtr pMemory).. 
1d340 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d350 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
1d360 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
1d370 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79 29 3b  3_free(pMemory);
1d380 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1d390 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1d3a0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1d3b0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1d3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d400 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1d410 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53   #region SQLiteS
1d420 74 72 69 6e 67 20 53 74 61 74 69 63 20 43 6c 61  tring Static Cla
1d430 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
1d440 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
1d450 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69  his class contai
1d460 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64  ns static method
1d470 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20  s that are used 
1d480 74 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74  to deal with nat
1d490 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 54 46  ive..    /// UTF
1d4a0 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
1d4b0 72 73 20 74 6f 20 62 65 20 75 73 65 64 20 77 69  rs to be used wi
1d4c0 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
1d4d0 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1d4e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1d4f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d500 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  atic class SQLit
1d510 65 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a  eString..    {..
1d520 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
1d530 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
1d540 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
1d550 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d560 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
1d570 65 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73 69 62  e maximum possib
1d580 6c 65 20 6c 65 6e 67 74 68 20 66 6f 72 20 74 68  le length for th
1d590 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 65  e native UTF-8 e
1d5a0 6e 63 6f 64 65 64 0d 0a 20 20 20 20 20 20 20 20  ncoded..        
1d5b0 2f 2f 2f 20 73 74 72 69 6e 67 73 20 75 73 65 64  /// strings used
1d5c0 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
1d5d0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
1d5e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d5f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d600 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
1d610 6e 74 20 54 68 69 72 74 79 42 69 74 73 20 3d 20  nt ThirtyBits = 
1d620 30 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d 0a 20  0x3fffffff;.... 
1d630 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1d640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1d690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d6a0 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
1d6b0 20 3c 73 65 65 20 63 72 65 66 3d 22 45 6e 63 6f   <see cref="Enco
1d6c0 64 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ding" /> object 
1d6d0 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
1d6e0 20 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20   handle..       
1d6f0 20 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73   /// conversions
1d700 20 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e 0d   from/to UTF-8..
1d710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1d720 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d730 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
1d740 72 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64 69 6e  readonly Encodin
1d750 67 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 20 3d  g Utf8Encoding =
1d760 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 3b 0d   Encoding.UTF8;.
1d770 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
1d780 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
1d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1d7e0 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20    #region UTF-8 
1d7f0 45 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65 72 20  Encoding Helper 
1d800 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
1d810 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1d820 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1d830 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
1d840 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  ed managed strin
1d850 67 20 69 6e 74 6f 20 74 68 65 20 55 54 46 2d 38  g into the UTF-8
1d860 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d 0a 20   encoding and.. 
1d870 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72         /// retur
1d880 6e 73 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  ns the array of 
1d890 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  bytes containing
1d8a0 20 69 74 73 20 72 65 70 72 65 73 65 6e 74 61 74   its representat
1d8b0 69 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20 20 20  ion in that..   
1d8c0 20 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 69 6e       /// encodin
1d8d0 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g...        /// 
1d8e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1d8f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d900 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
1d910 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1d920 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20  naged string to 
1d930 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
1d940 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d950 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1d960 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1d970 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
1d980 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  bytes containing
1d990 20 74 68 65 20 72 65 70 72 65 73 65 6e 74 61 74   the representat
1d9a0 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e 61 67  ion of the manag
1d9b0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1d9c0 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 55 54  string in the UT
1d9d0 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f 72 20  F-8 encoding or 
1d9e0 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
1d9f0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1da00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1da10 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1da20 63 20 62 79 74 65 5b 5d 20 47 65 74 55 74 66 38  c byte[] GetUtf8
1da30 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28  BytesFromString(
1da40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1da50 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
1da60 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1da70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1da80 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1da90 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1daa0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1dab0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
1dac0 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63    return Utf8Enc
1dad0 6f 64 69 6e 67 2e 47 65 74 42 79 74 65 73 28 76  oding.GetBytes(v
1dae0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
1daf0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db40 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1db50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1db60 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
1db70 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
1db80 64 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  d array of bytes
1db90 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20   representing a 
1dba0 73 74 72 69 6e 67 20 69 6e 20 74 68 65 0d 0a 20  string in the.. 
1dbb0 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38         /// UTF-8
1dbc0 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20 72 65   encoding and re
1dbd0 74 75 72 6e 73 20 61 20 6d 61 6e 61 67 65 64 20  turns a managed 
1dbe0 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
1dbf0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1dc00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1dc10 72 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65 73 22  ram name="bytes"
1dc20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1dc30 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  he array of byte
1dc40 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  s to convert... 
1dc50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1dc60 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1dc70 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1dc80 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61      /// The mana
1dc90 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75  ged string or nu
1dca0 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
1dcb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1dcc0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1dcd0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1dce0 73 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67  string GetString
1dcf0 46 72 6f 6d 55 74 66 38 42 79 74 65 73 28 0d 0a  FromUtf8Bytes(..
1dd00 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1dd10 5b 5d 20 62 79 74 65 73 0d 0a 20 20 20 20 20 20  [] bytes..      
1dd20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1dd30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1dd40 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c  if (bytes == nul
1dd50 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1dd60 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
1dd70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dd80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dd90 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1dda0 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64  return Utf8Encod
1ddb0 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28 62 79  ing.GetString(by
1ddc0 74 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  tes);..#else..  
1ddd0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1dde0 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65   Utf8Encoding.Ge
1ddf0 74 53 74 72 69 6e 67 28 62 79 74 65 73 2c 20 30  tString(bytes, 0
1de00 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b  , bytes.Length);
1de10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1de20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
1de30 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1de40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1de50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1de90 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54        #region UT
1dea0 46 2d 38 20 53 74 72 69 6e 67 20 48 65 6c 70 65  F-8 String Helpe
1deb0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
1dec0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ded0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 72  ..        /// Pr
1dee0 6f 62 65 73 20 61 20 6e 61 74 69 76 65 20 70 6f  obes a native po
1def0 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69 6e  inter to a strin
1df00 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65  g in the UTF-8 e
1df10 6e 63 6f 64 69 6e 67 20 66 6f 72 20 69 74 73 0d  ncoding for its.
1df20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 65 72  .        /// ter
1df30 6d 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63 68 61  minating NUL cha
1df40 72 61 63 74 65 72 2c 20 77 69 74 68 69 6e 20 74  racter, within t
1df50 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e  he specified len
1df60 67 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20 20 20  gth limit...    
1df70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1df80 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1df90 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61  <param name="pVa
1dfa0 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1dfb0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55  // The native NU
1dfc0 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72  L-terminated str
1dfd0 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20  ing pointer...  
1dfe0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1dff0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1e000 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 69 6d  <param name="lim
1e010 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  it">..        //
1e020 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65  / The maximum le
1e030 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69  ngth of the nati
1e040 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79  ve string, in by
1e050 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tes...        //
1e060 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e070 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1e080 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1e090 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65  he length of the
1e0a0 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20   native string, 
1e0b0 69 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20 7a 65  in bytes -OR- ze
1e0c0 72 6f 20 69 66 20 74 68 65 20 6c 65 6e 67 74 68  ro if the length
1e0d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
1e0e0 75 6c 64 20 6e 6f 74 20 62 65 20 64 65 74 65 72  uld not be deter
1e0f0 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  mined...        
1e100 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1e110 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1e120 74 61 74 69 63 20 69 6e 74 20 50 72 6f 62 65 46  tatic int ProbeF
1e130 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68  orUtf8ByteLength
1e140 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1e150 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr pValue,.. 
1e160 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
1e170 69 6d 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20  imit..          
1e180 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1e190 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1e1a0 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20  length = 0;.... 
1e1b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
1e1c0 70 56 61 6c 75 65 20 21 3d 20 49 6e 74 50 74 72  pValue != IntPtr
1e1d0 2e 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d 69 74  .Zero) && (limit
1e1e0 20 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20   > 0))..        
1e1f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e200 20 20 20 20 20 20 20 64 6f 0d 0a 20 20 20 20 20         do..     
1e210 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e230 20 20 69 66 20 28 4d 61 72 73 68 61 6c 2e 52 65    if (Marshal.Re
1e240 61 64 42 79 74 65 28 70 56 61 6c 75 65 2c 20 6c  adByte(pValue, l
1e250 65 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a 20 20  ength) == 0)..  
1e260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e270 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a        break;....
1e280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e290 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e      if (length >
1e2a0 3d 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20 20 20  = limit)..      
1e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2c0 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20    break;....    
1e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2e0 6c 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20 20 20  length++;..     
1e2f0 20 20 20 20 20 20 20 20 20 20 20 7d 20 77 68 69             } whi
1e300 6c 65 20 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  le (true);..    
1e310 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1e320 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1e330 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  length;..       
1e340 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1e350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e390 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1e3a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1e3b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1e3c0 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
1e3d0 65 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  ed native NUL-te
1e3e0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
1e3f0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d 0a 20  tring pointer.. 
1e400 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20         /// into 
1e410 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  a managed string
1e420 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e430 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1e440 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1e450 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20  me="pValue">..  
1e460 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1e470 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
1e480 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
1e490 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
1e4a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e4b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1e4c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e4d0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
1e4e0 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75  string or null u
1e4f0 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
1e500 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1e510 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1e520 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
1e530 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng StringFromUtf
1e540 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  8IntPtr(..      
1e550 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61        IntPtr pVa
1e560 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
1e570 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1e580 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e590 6e 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  n StringFromUtf8
1e5a0 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 0d 0a  IntPtr(pValue,..
1e5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5c0 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79 74 65  ProbeForUtf8Byte
1e5d0 4c 65 6e 67 74 68 28 70 56 61 6c 75 65 2c 20 54  Length(pValue, T
1e5e0 68 69 72 74 79 42 69 74 73 29 29 3b 0d 0a 20 20  hirtyBits));..  
1e5f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e600 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1e650 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1e660 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1e670 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
1e680 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 55  ecified native U
1e690 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
1e6a0 74 65 72 20 6f 66 20 74 68 65 20 73 70 65 63 69  ter of the speci
1e6b0 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
1e6c0 2f 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20  / length into a 
1e6d0 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d  managed string..
1e6e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1e6f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1e700 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1e710 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20  ="pValue">..    
1e720 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1e730 76 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ve UTF-8 string 
1e740 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
1e750 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1e760 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1e770 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22  am name="length"
1e780 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1e790 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65  he length of the
1e7a0 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20   native string, 
1e7b0 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20  in bytes...     
1e7c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e7d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1e7e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e7f0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
1e800 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75  string or null u
1e810 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
1e820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1e830 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1e840 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
1e850 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng StringFromUtf
1e860 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  8IntPtr(..      
1e870 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61        IntPtr pVa
1e880 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lue,..          
1e890 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20    int length..  
1e8a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1e8b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e8c0 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d      if (pValue =
1e8d0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1e8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8f0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1e900 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1e910 6c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20  length > 0)..   
1e920 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e930 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1e940 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20 62  [] bytes = new b
1e950 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a  yte[length];....
1e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e970 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56 61  Marshal.Copy(pVa
1e980 6c 75 65 2c 20 62 79 74 65 73 2c 20 30 2c 20 6c  lue, bytes, 0, l
1e990 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20  ength);....     
1e9a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e9b0 6e 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55  n GetStringFromU
1e9c0 74 66 38 42 79 74 65 73 28 62 79 74 65 73 29 3b  tf8Bytes(bytes);
1e9d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1e9e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1e9f0 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70  eturn String.Emp
1ea00 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ty;..        }..
1ea10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1ea20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1ea70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1ea80 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
1ea90 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
1eaa0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e  anaged string in
1eab0 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d  to a native NUL-
1eac0 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20  terminated..    
1ead0 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74      /// UTF-8 st
1eae0 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69  ring pointer usi
1eaf0 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e  ng memory obtain
1eb00 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ed from the SQLi
1eb10 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20  te core..       
1eb20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20   /// library... 
1eb30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1eb40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1eb50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1eb60 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1eb70 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1eb80 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65   string to conve
1eb90 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
1eba0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1ebb0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1ebc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ebd0 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  e native NUL-ter
1ebe0 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1ebf0 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d  ring pointer or.
1ec00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1ec10 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
1ec20 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69  ero" /> upon fai
1ec30 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1ec40 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1ec50 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1ec60 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38  atic IntPtr Utf8
1ec70 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
1ec80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
1ec90 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20  tring value..   
1eca0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1ecb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1ecc0 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20     int length = 
1ecd0 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
1ece0 20 20 72 65 74 75 72 6e 20 55 74 66 38 49 6e 74    return Utf8Int
1ecf0 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61  PtrFromString(va
1ed00 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68 29  lue, ref length)
1ed10 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1ed20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1ed30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ed70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ed80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1ed90 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
1eda0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
1edb0 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f  aged string into
1edc0 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65   a native NUL-te
1edd0 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20 20  rminated..      
1ede0 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69    /// UTF-8 stri
1edf0 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69 6e 67  ng pointer using
1ee00 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64   memory obtained
1ee10 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
1ee20 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   core..        /
1ee30 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
1ee40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1ee50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1ee60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1ee70 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1ee80 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
1ee90 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74  tring to convert
1eea0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1eeb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1eec0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1eed0 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20  ="length">..    
1eee0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67      /// The leng
1eef0 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  th of the native
1ef00 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65   string, in byte
1ef10 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1ef20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ef30 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1ef40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ef50 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
1ef60 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
1ef70 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a  ing pointer or..
1ef80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1ef90 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
1efa0 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c  ro" /> upon fail
1efb0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1efc0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1efd0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1efe0 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38 49  tic IntPtr Utf8I
1eff0 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
1f000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1f010 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20 20  ring value,..   
1f020 20 20 20 20 20 20 20 20 20 72 65 66 20 69 6e 74           ref int
1f030 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20   length..       
1f040 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1f050 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1f060 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
1f070 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f080 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
1f090 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
1f0a0 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65 73        IntPtr res
1f0b0 75 6c 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ult = IntPtr.Zer
1f0c0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
1f0d0 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 47  byte[] bytes = G
1f0e0 65 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53  etUtf8BytesFromS
1f0f0 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d  tring(value);...
1f100 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1f110 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  (bytes == null).
1f120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f130 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1f140 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
1f150 20 20 20 20 6c 65 6e 67 74 68 20 3d 20 62 79 74      length = byt
1f160 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20  es.Length;....  
1f170 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
1f180 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e   = SQLiteMemory.
1f190 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68 20  Allocate(length 
1f1a0 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  + 1);....       
1f1b0 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
1f1c0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1f1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f1e0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1f1f0 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
1f200 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
1f210 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73 75 6c  (bytes, 0, resul
1f220 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20  t, length);..   
1f230 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
1f240 2e 57 72 69 74 65 42 79 74 65 28 72 65 73 75 6c  .WriteByte(resul
1f250 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0d 0a  t, length, 0);..
1f260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1f270 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
1f280 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1f290 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1f2a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f2f0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1f300 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67 20 41  n UTF-8 String A
1f310 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68  rray Helper Meth
1f320 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
1f330 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f340 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
1f350 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79   a logical array
1f360 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74   of native NUL-t
1f370 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
1f380 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  string..        
1f390 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69 6e 74  /// pointers int
1f3a0 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61  o an array of ma
1f3b0 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e 0d 0a  naged strings...
1f3c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1f3d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1f3e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1f3f0 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
1f400 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
1f410 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74  of elements in t
1f420 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79  he logical array
1f430 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20 20   of native..    
1f440 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72 6d      /// NUL-term
1f450 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
1f460 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a 20  ing pointers... 
1f470 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f480 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f490 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
1f4a0 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gv">..        //
1f4b0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1f4c0 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69  nter to the logi
1f4d0 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74  cal array of nat
1f4e0 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1f4f0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1f500 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1f510 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65 72 74  nters to convert
1f520 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f530 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1f540 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1f550 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f560 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64  array of managed
1f570 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c 6c   strings or null
1f580 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1f590 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1f5a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1f5b0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1f5c0 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41 72 72  ring[] StringArr
1f5d0 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e  ayFromUtf8SizeAn
1f5e0 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
1f5f0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
1f600 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1f610 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20  Ptr argv..      
1f620 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1f630 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f640 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a 20  if (argc < 0).. 
1f650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1f660 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1f670 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
1f680 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  rgv == IntPtr.Ze
1f690 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1f6a0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1f6b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f6c0 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75 6c 74   string[] result
1f6d0 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 61 72   = new string[ar
1f6e0 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gc];....        
1f6f0 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
1f700 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d  ex = 0, offset =
1f710 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
1f720 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c           index <
1f730 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d   result.Length;.
1f740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f750 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66       index++, of
1f760 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53  fset += IntPtr.S
1f770 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ize)..          
1f780 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1f790 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67       IntPtr pArg
1f7a0 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
1f7b0 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76  .ReadIntPtr(argv
1f7c0 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1f7e0 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70  sult[index] = (p
1f7f0 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  Arg != IntPtr.Ze
1f800 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ro) ?..         
1f810 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
1f820 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
1f830 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20  pArg) : null;.. 
1f840 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1f850 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1f860 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
1f870 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f880 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f8d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f8e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
1f8f0 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72 61 79  onverts an array
1f900 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69   of managed stri
1f910 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72 72 61  ngs into an arra
1f920 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20  y of native..   
1f930 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72       /// NUL-ter
1f940 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1f950 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a  ring pointers...
1f960 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1f970 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1f980 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1f990 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20  "values">..     
1f9a0 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
1f9b0 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69   of managed stri
1f9c0 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  ngs to convert..
1f9d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1f9e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1f9f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1fa00 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
1fa10 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55  ray of native NU
1fa20 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46  L-terminated UTF
1fa30 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
1fa40 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20  rs or null..    
1fa50 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69      /// upon fai
1fa60 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1fa70 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1fa80 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1fa90 61 74 69 63 20 49 6e 74 50 74 72 5b 5d 20 55 74  atic IntPtr[] Ut
1faa0 66 38 49 6e 74 50 74 72 41 72 72 61 79 46 72 6f  f8IntPtrArrayFro
1fab0 6d 53 74 72 69 6e 67 41 72 72 61 79 28 0d 0a 20  mStringArray(.. 
1fac0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1fad0 67 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  g[] values..    
1fae0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1faf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1fb00 20 20 69 66 20 28 76 61 6c 75 65 73 20 3d 3d 20    if (values == 
1fb10 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1fb20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
1fb30 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
1fb40 20 20 20 49 6e 74 50 74 72 5b 5d 20 72 65 73 75     IntPtr[] resu
1fb50 6c 74 20 3d 20 6e 65 77 20 49 6e 74 50 74 72 5b  lt = new IntPtr[
1fb60 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 5d 3b 0d  values.Length];.
1fb70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
1fb80 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20  or (int index = 
1fb90 30 3b 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c  0; index < resul
1fba0 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b  t.Length; index+
1fbb0 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
1fbc0 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78      result[index
1fbd0 5d 20 3d 20 55 74 66 38 49 6e 74 50 74 72 46 72  ] = Utf8IntPtrFr
1fbe0 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 73 5b  omString(values[
1fbf0 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20 20 20  index]);....    
1fc00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
1fc10 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
1fc20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1fc30 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
1fc40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1fc50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1fca0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
1fcb0 51 4c 69 74 65 42 79 74 65 73 20 53 74 61 74 69  QLiteBytes Stati
1fcc0 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  c Class..    ///
1fcd0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1fce0 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63  /// This class c
1fcf0 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d  ontains static m
1fd00 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65 20  ethods that are 
1fd10 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74  used to deal wit
1fd20 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f 2f  h native..    //
1fd30 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6d 65  / pointers to me
1fd40 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68 61 74  mory blocks that
1fd50 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e 74 61   logically conta
1fd60 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62 79 74  in arrays of byt
1fd70 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20 2f 2f  es to be..    //
1fd80 2f 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20  / used with the 
1fd90 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1fda0 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
1fdb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
1fdc0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
1fdd0 61 73 73 20 53 51 4c 69 74 65 42 79 74 65 73 0d  ass SQLiteBytes.
1fde0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1fdf0 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41 72 72  #region Byte Arr
1fe00 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ay Helper Method
1fe10 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
1fe20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1fe30 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1fe40 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1fe50 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72  to a logical arr
1fe60 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66 20 74  ay of bytes of t
1fe70 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1fe80 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
1fe90 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20   into a managed 
1fea0 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20 20 20  byte array...   
1feb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1fec0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1fed0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
1fee0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1fef0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1ff00 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f  ointer to the lo
1ff10 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62  gical array of b
1ff20 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ytes to convert.
1ff30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ff40 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1ff50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1ff60 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20  "length">..     
1ff70 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
1ff80 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  h, in bytes, of 
1ff90 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
1ffa0 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f  y of bytes to co
1ffb0 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1ffc0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ffd0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1ffe0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1fff0 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74   The managed byt
20000 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20  e array or null 
20010 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
20020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
20030 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
20040 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74  ublic static byt
20050 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d  e[] FromIntPtr(.
20060 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
20070 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20  Ptr pValue,..   
20080 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
20090 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gth..           
200a0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
200b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
200c0 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e  Value == IntPtr.
200d0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
200e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
200f0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
20100 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d     if (length ==
20110 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
20120 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
20130 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  byte[0];....    
20140 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 72          byte[] r
20150 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79 74 65  esult = new byte
20160 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20  [length];....   
20170 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
20180 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 72 65  .Copy(pValue, re
20190 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74 68 29  sult, 0, length)
201a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
201b0 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
201c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
201d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
201e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20220 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
20230 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20240 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6d  /// Converts a m
20250 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
20260 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20  y into a native 
20270 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67  pointer to a log
20280 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ical..        //
20290 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  / array of bytes
202a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
202b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
202c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
202d0 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
202e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
202f0 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20  aged byte array 
20300 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
20310 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20320 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20330 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20340 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
20350 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
20360 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61 79  gical byte array
20370 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
20380 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
20390 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
203a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
203b0 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49  tatic IntPtr ToI
203c0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
203d0 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65      byte[] value
203e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
203f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
20400 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
20410 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  th = 0;....     
20420 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f         return To
20430 49 6e 74 50 74 72 28 76 61 6c 75 65 2c 20 72 65  IntPtr(value, re
20440 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20  f length);..    
20450 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
20460 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
204a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
204b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
204c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
204d0 6f 6e 76 65 72 74 73 20 61 20 6d 61 6e 61 67 65  onverts a manage
204e0 64 20 62 79 74 65 20 61 72 72 61 79 20 69 6e 74  d byte array int
204f0 6f 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  o a native point
20500 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d  er to a logical.
20510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72  .        /// arr
20520 61 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20  ay of bytes...  
20530 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
20540 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
20550 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
20560 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
20570 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
20580 62 79 74 65 20 61 72 72 61 79 20 74 6f 20 63 6f  byte array to co
20590 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
205a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
205b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
205c0 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d   name="length">.
205d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
205e0 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79 74 65   length, in byte
205f0 73 2c 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72  s, of the conver
20600 74 65 64 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  ted logical arra
20610 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20  y of bytes...   
20620 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20640 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20650 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
20660 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
20670 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61 79  gical byte array
20680 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
20690 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
206a0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
206b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
206c0 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49  tatic IntPtr ToI
206d0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
206e0 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65      byte[] value
206f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
20700 65 66 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20  ef int length.. 
20710 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
20720 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20730 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
20740 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
20750 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
20760 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
20770 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67              leng
20780 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74  th = value.Lengt
20790 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
207a0 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20    if (length == 
207b0 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
207c0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
207d0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
207e0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65         IntPtr re
207f0 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d  sult = SQLiteMem
20800 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e  ory.Allocate(len
20810 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
20820 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
20830 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
20840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20850 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
20860 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
20870 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
20880 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c  (value, 0, resul
20890 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20  t, length);.... 
208a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
208b0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
208c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
208d0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
208e0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
208f0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
20900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20940 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
20950 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 20  n SQLiteMarshal 
20960 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20  Static Class..  
20970 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
20980 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
20990 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61  ass contains sta
209a0 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74  tic methods that
209b0 20 61 72 65 20 75 73 65 64 20 74 6f 20 70 65 72   are used to per
209c0 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20  form several..  
209d0 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20    /// low-level 
209e0 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67  data marshalling
209f0 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20 6e   tasks between n
20a00 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67 65  ative and manage
20a10 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
20a20 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
20a30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20a40 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61 72   class SQLiteMar
20a50 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  shal..    {..   
20a60 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
20a70 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  Ptr Helper Metho
20a80 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
20a90 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
20aa0 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61     /// Returns a
20ab0 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
20ac0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
20ad0 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64  t instance based
20ae0 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   on the..       
20af0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
20b00 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
20b10 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20b20 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74 65  ance and an inte
20b30 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ger..        ///
20b40 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20 20   offset...      
20b50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
20b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20b70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
20b80 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
20b90 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20ba0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
20bb0 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
20bc0 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
20bd0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
20be0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
20bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20c00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20c10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20c20 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
20c30 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
20c40 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
20c50 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
20c60 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  cation that the 
20c70 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  new..        ///
20c80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
20c90 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
20ca0 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f  stance should po
20cb0 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20  int to...       
20cc0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20cd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
20ce0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
20cf0 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63  / The new <see c
20d00 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
20d10 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
20d20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20d30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20d40 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
20d50 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f 72  IntPtr IntPtrFor
20d60 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
20d70 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
20d80 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
20d90 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20    int offset..  
20da0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
20db0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20dc0 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 49      return new I
20dd0 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f  ntPtr(pointer.To
20de0 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74  Int64() + offset
20df0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
20e00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
20e60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
20e70 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70     /// Rounds up
20e80 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a 65   an integer size
20e90 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c   to the next mul
20ea0 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69  tiple of the ali
20eb0 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  gnment...       
20ec0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
20ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
20ee0 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
20ef0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20f00 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73  e size, in bytes
20f10 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64 20  , to be rounded 
20f20 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  up...        ///
20f30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20f40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20f50 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d  me="alignment">.
20f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
20f70 20 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e 6d   required alignm
20f80 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74 75  ent for the retu
20f90 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  rn value...     
20fa0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
20fb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
20fc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
20fd0 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e  /// The size, in
20fe0 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64 20   bytes, rounded 
20ff0 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d  up to the next m
21000 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a  ultiple of the..
21010 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67          /// alig
21020 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61 6c  nment.  This val
21030 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62 65  ue may end up be
21040 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73 20  ing the same as 
21050 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20  the original..  
21060 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d        /// size..
21070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
21080 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21090 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
210a0 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20  nt RoundUp(..   
210b0 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
210c0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
210d0 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20  int alignment.. 
210e0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
210f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21100 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65       int alignme
21110 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69  ntMinusOne = ali
21120 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20  gnment - 1;..   
21130 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21140 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65  ((size + alignme
21150 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61  ntMinusOne) & ~a
21160 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65  lignmentMinusOne
21170 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
21180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
21190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
211e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
211f0 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
21200 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69 6e  s the offset, in
21210 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e   bytes, of the n
21220 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ext structure me
21230 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
21240 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
21250 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21260 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
21270 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21280 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74  e offset, in byt
21290 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65  es, of the curre
212a0 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  nt structure mem
212b0 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
212c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
212d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
212e0 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20  ame="size">..   
212f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
21300 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  e, in bytes, of 
21310 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75  the current stru
21320 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
21330 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
21340 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
21350 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c   <param name="al
21360 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20  ignment">..     
21370 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e     /// The align
21380 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c 20  ment, in bytes, 
21390 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75  of the next stru
213a0 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
213b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
213c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
213d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
213e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73      /// The offs
213f0 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  et, in bytes, of
21400 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74   the next struct
21410 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
21420 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
21430 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
21440 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4e  lic static int N
21450 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
21460 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
21470 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
21480 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20     int size,..  
21490 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c            int al
214a0 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ignment..       
214b0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
214c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
214d0 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66  eturn RoundUp(of
214e0 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69  fset + size, ali
214f0 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  gnment);..      
21500 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
21510 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
21520 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
21530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
21570 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61        #region Ma
21580 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70 65  rshal Read Helpe
21590 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
215a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
215b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
215c0 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ads a <see cref=
215d0 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
215e0 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
215f0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
21600 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
21610 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21620 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
21630 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21640 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
21650 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
21660 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
21670 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
21680 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
21690 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
216a0 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
216b0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
216c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
216d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
216e0 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
216f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21700 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
21710 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
21720 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
21730 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
21740 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
21750 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
21760 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20  e to be read is 
21770 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
21780 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21790 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
217a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
217b0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
217c0 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
217d0 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
217e0 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
217f0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
21800 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
21810 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
21820 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33 32  ic int ReadInt32
21830 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
21840 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
21850 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
21860 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
21870 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
21880 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21890 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
218a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
218b0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
218c0 64 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20  dInt32(pointer, 
218d0 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d  offset);..#else.
218e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
218f0 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
21900 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f  Int32(IntPtrForO
21910 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
21920 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66  ffset));..#endif
21930 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
21940 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
21950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
21990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
219a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
219b0 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65   /// Reads a <se
219c0 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
219d0 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
219e0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
219f0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
21a00 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
21a10 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
21a20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21a30 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
21a40 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
21a50 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
21a60 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
21a70 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
21a80 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
21a90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
21aa0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
21ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21ac0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21ad0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21ae0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
21af0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
21b00 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
21b10 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
21b20 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
21b30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21b40 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
21b50 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  /> value to be r
21b60 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ead is located..
21b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21b80 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21b90 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
21ba0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
21bb0 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
21bc0 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20  /> value at the 
21bd0 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
21be0 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
21bf0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
21c00 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
21c10 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 52  ic static long R
21c20 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20  eadInt64(..     
21c30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
21c40 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
21c50 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
21c60 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
21c70 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
21c80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21c90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
21ca0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
21cb0 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 70  shal.ReadInt64(p
21cc0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b  ointer, offset);
21cd0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
21ce0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
21cf0 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e  hal.ReadInt64(In
21d00 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
21d10 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b  inter, offset));
21d20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
21d30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
21d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21d90 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21da0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
21db0 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ds a <see cref="
21dc0 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
21dd0 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
21de0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
21df0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
21e00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21e10 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
21e20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21e30 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
21e40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
21e50 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
21e60 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
21e70 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
21e80 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
21e90 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
21ea0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
21eb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21ec0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21ed0 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
21ee0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21ef0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
21f00 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
21f10 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
21f20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
21f30 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
21f40 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20  ="Double" /> to 
21f50 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74  be read is locat
21f60 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
21f70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
21f80 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
21f90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21fa0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  e <see cref="Dou
21fb0 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 74  ble" /> value at
21fc0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
21fd0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
21fe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
21ff0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22000 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 64   public static d
22010 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62 6c 65  ouble ReadDouble
22020 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
22030 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
22040 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
22050 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
22060 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
22070 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22080 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
220a0 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65  turn BitConverte
220b0 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44 6f 75  r.Int64BitsToDou
220c0 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65 61 64  ble(Marshal.Read
220d0 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
220e0 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72 2c          pointer,
220f0 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73   offset));..#els
22100 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
22110 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74  eturn BitConvert
22120 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74 43  er.ToDouble(BitC
22130 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
22140 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
22150 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65 61 64      Marshal.Read
22160 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
22170 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
22180 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23  ffset))), 0);..#
22190 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
221a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
221b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
22200 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
22210 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
22220 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  an <see cref="In
22230 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 66  tPtr" /> value f
22240 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
22250 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
22260 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
22270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
22280 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22290 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
222a0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
222b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
222c0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
222d0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
222e0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
222f0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
22300 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
22310 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
22320 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22330 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
22340 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
22350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
22360 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
22370 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
22380 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
22390 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
223a0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
223b0 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
223c0 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
223d0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
223e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
223f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
22400 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
22410 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
22420 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75  "IntPtr" /> valu
22430 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
22440 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
22450 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
22460 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
22470 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
22480 69 63 20 49 6e 74 50 74 72 20 52 65 61 64 49 6e  ic IntPtr ReadIn
22490 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
224a0 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
224b0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
224c0 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
224d0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
224e0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
224f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22500 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
22510 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
22520 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f 69 6e  .ReadIntPtr(poin
22530 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23  ter, offset);..#
22540 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
22550 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
22560 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e 74 50  .ReadIntPtr(IntP
22570 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
22580 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  ter, offset));..
22590 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
225a0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
225b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
225c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
225d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22610 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73      #region Mars
22620 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70 65 72  hal Write Helper
22630 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
22640 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
22650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
22660 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  tes an <see cref
22670 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
22680 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
22690 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
226a0 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
226b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
226c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
226d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
226e0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
226f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
22700 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
22710 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
22720 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
22730 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
22740 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
22750 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
22760 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
22770 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
22780 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
22790 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
227a0 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
227b0 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
227c0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
227d0 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
227e0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
227f0 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
22800 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
22810 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
22820 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22840 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
22850 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
22860 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
22870 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
22880 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
22890 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
228a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
228b0 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
228c0 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
228d0 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
228e0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
228f0 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20   int offset,..  
22900 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76 61            int va
22910 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
22920 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
22930 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22940 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22950 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
22960 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 6f  al.WriteInt32(po
22970 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76  inter, offset, v
22980 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
22990 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
229a0 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49 6e  al.WriteInt32(In
229b0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
229c0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20  inter, offset), 
229d0 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
229e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
229f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
22a50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22a60 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c 73  /// Writes an <s
22a70 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
22a80 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
22a90 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
22aa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
22ab0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
22ac0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
22ad0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
22ae0 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
22af0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
22b00 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
22b10 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
22b20 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
22b30 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
22b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
22b50 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
22b60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
22b70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
22b80 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
22b90 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
22ba0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
22bb0 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
22bc0 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
22bd0 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
22be0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
22bf0 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
22c00 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
22c10 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
22c20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22c30 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22c40 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22c50 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
22c60 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
22c70 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
22c80 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
22c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
22ca0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
22cb0 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
22cc0 64 20 57 72 69 74 65 49 6e 74 36 34 28 0d 0a 20  d WriteInt64(.. 
22cd0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
22ce0 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
22cf0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
22d00 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
22d10 20 6c 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20   long value..   
22d20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
22d30 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
22d40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22d50 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
22d60 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
22d70 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f  Int64(pointer, o
22d80 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a  ffset, value);..
22d90 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
22da0 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
22db0 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
22dc0 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
22dd0 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d  ffset), value);.
22de0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
22df0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
22e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
22e50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
22e70 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  es a <see cref="
22e80 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
22e90 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
22ea0 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
22eb0 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
22ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
22ed0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22ee0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22ef0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
22f00 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
22f10 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
22f20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
22f30 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
22f40 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
22f50 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
22f60 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
22f70 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22f80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
22f90 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
22fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
22fb0 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
22fc0 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
22fd0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
22fe0 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
22ff0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
23000 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
23010 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
23020 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
23030 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
23040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
23050 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
23060 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
23070 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
23080 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20  ouble" /> value 
23090 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
230a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
230b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
230c0 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
230d0 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20  eDouble(..      
230e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
230f0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
23100 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
23110 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62              doub
23120 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  le value..      
23130 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
23140 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
23150 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23160 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
23170 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
23180 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  64(pointer, offs
23190 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
231a0 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65       BitConverte
231b0 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34 42  r.DoubleToInt64B
231c0 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23 65  its(value));..#e
231d0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
231e0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
231f0 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
23200 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
23210 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  set),..         
23220 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72         BitConver
23230 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74 43  ter.ToInt64(BitC
23240 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
23250 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d 0a  s(value), 0));..
23260 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
23270 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
23280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
232d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
232e0 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
232f0 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49  s a <see cref="I
23300 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
23310 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
23320 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
23330 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
23340 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
23350 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
23360 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
23370 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
23380 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
23390 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
233a0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
233b0 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
233c0 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
233d0 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
233e0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
233f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23400 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23410 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
23420 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
23430 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
23440 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
23450 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
23460 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
23470 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
23480 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
23490 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73  to be written is
234a0 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
234b0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
234c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
234d0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
234e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
234f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
23500 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74  tPtr" /> value t
23510 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
23520 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
23530 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
23540 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
23550 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
23560 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
23570 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
23580 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
23590 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
235a0 72 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  r value..       
235b0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
235c0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
235d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
235e0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  K..            M
235f0 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
23600 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  tr(pointer, offs
23610 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  et, value);..#el
23620 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
23630 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
23640 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr(IntPtrForOff
23650 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
23660 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  set), value);..#
23670 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
23680 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
23690 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
236a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
236f0 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63     #region Objec
23700 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  t Helper Methods
23710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
23720 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23730 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20 61   /// Generates a
23740 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75 65   hash code value
23750 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 2e   for the object.
23760 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
23770 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23780 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23790 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
237a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
237b0 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
237c0 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74 68   to calculate th
237d0 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20  e hash code...  
237e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
237f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
23800 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65  <param name="ide
23810 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20 20  ntity">..       
23820 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
23830 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65 63   different objec
23840 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74 68  t instances with
23850 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20   the same value 
23860 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20  should..        
23870 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69 66  /// generate dif
23880 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64 65  ferent hash code
23890 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63 61  s, where applica
238a0 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ble.  This param
238b0 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eter..        //
238c0 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  / has no effect 
238d0 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
238e0 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a  act Framework...
238f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23900 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
23910 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
23920 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61 73       /// The has
23930 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52  h code value -OR
23940 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f 62  - zero if the ob
23950 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20  ject is null... 
23960 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
23970 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
23980 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
23990 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20   GetHashCode(.. 
239a0 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
239b0 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  t value,..      
239c0 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74        bool ident
239d0 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
239e0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
239f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23a00 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23a10 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
23a20 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20 20  dentity)..      
23a30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23a40 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e   RuntimeHelpers.
23a50 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c 75  GetHashCode(valu
23a60 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
23a70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
23a80 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65  alue == null) re
23a90 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
23aa0 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
23ab0 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b  e.GetHashCode();
23ac0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
23ad0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
23ae0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
23af0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
23b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23b50 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d   #region SQLiteM
23b60 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73 73  odule Base Class
23b70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
23b80 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
23b90 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
23ba0 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72  ts a managed vir
23bb0 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
23bc0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
23bd0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73  ...    /// It is
23be0 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20   not sealed and 
23bf0 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73 20  must be used as 
23c00 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
23c10 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20  or any..    /// 
23c20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72  user-defined vir
23c30 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
23c40 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d  e classes implem
23c50 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64  ented in managed
23c60 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
23c70 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23c80 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
23c90 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75  class SQLiteModu
23ca0 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  le :..          
23cb0 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64    ISQLiteManaged
23cc0 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74  Module, /*ISQLit
23cd0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f  eNativeModule,*/
23ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 44  ..            ID
23cf0 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54  isposable /* NOT
23d00 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20   SEALED */..    
23d10 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
23d20 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  on SQLiteNativeM
23d30 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43 6c  odule Private Cl
23d40 61 73 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ass..        ///
23d50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
23d60 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
23d70 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  ss implements th
23d80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
23d90 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23da0 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
23db0 2f 20 69 6e 74 65 72 66 61 63 65 20 62 79 20 66  / interface by f
23dc0 6f 72 77 61 72 64 69 6e 67 20 74 68 6f 73 65 20  orwarding those 
23dd0 6d 65 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f 20  method calls to 
23de0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
23df0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
23e00 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
23e10 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 74 20  ect instance it 
23e20 63 6f 6e 74 61 69 6e 73 2e 20 20 49 66 20 74 68  contains.  If th
23e30 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
23e40 6f 6e 74 61 69 6e 65 64 20 3c 73 65 65 20 63 72  ontained <see cr
23e50 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
23e60 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
23e70 61 6e 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61 6c  ance is null, al
23e80 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
23e90 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
23ea0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
23eb0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73 69  e" /> methods si
23ec0 6d 70 6c 79 20 67 65 6e 65 72 61 74 65 20 61 6e  mply generate an
23ed0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 72  ..        /// er
23ee0 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ror...        //
23ef0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
23f00 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
23f10 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
23f20 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a 0d  eNativeModule :.
23f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23f40 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
23f50 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c  dule, IDisposabl
23f60 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
23f70 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
23f80 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
23f90 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
23fa0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
23fb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23fc0 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c 75  This is the valu
23fd0 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79 73  e that is always
23fe0 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22 6c   used for the "l
23ff0 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20 20 20  ogErrors"..     
24000 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
24010 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
24020 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
24030 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
24040 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
24050 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
24060 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
24070 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
24080 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
24090 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
240a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
240b0 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
240c0 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f  l DefaultLogErro
240d0 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  rs = true;....  
240e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
240f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24130 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24140 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24150 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
24160 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74 68   is the value th
24170 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  at is always use
24180 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45 78  d for the "logEx
24190 63 65 70 74 69 6f 6e 73 22 0d 0a 20 20 20 20 20  ceptions"..     
241a0 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
241b0 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
241c0 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
241d0 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
241e0 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
241f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
24200 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
24210 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
24220 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
24230 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24240 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
24250 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
24260 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65  l DefaultLogExce
24270 70 74 69 6f 6e 73 20 3d 20 74 72 75 65 3b 0d 0a  ptions = true;..
24280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
242e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
242f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24300 54 68 69 73 20 69 73 20 74 68 65 20 65 72 72 6f  This is the erro
24310 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20 75  r message text u
24320 73 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6e  sed when the con
24330 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 20  tained..        
24340 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
24350 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
24360 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
24370 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  nce is not avail
24380 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
24390 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65    /// for any re
243a0 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  ason...         
243b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
243c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
243d0 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
243e0 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ing ModuleNotAva
243f0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
24400 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ge =..          
24410 20 20 20 20 20 20 22 6e 61 74 69 76 65 20 6d 6f        "native mo
24420 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
24430 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  ion not availabl
24440 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e";..           
24450 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
24460 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
24470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
244b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
244c0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
244d0 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
244e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
244f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
24500 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
24510 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
24520 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
24530 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a  sed to provide..
24540 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24550 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  an implementatio
24560 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72  n of the <see cr
24570 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
24580 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
24590 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74           /// int
245a0 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20  erface...       
245b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
245c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
245d0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 4d   private SQLiteM
245e0 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20  odule module;.. 
245f0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
24600 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
24610 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24650 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
24660 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
24670 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
24680 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
24690 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
246a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
246b0 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
246c0 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
246d0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
246e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
246f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24700 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
24710 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20  module">..      
24720 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
24730 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
24740 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
24750 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
24760 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20  o provide..     
24770 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d         /// an im
24780 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
24790 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
247a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
247b0 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
247c0 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63      /// interfac
247d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
247e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
247f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
24800 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
24810 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
24820 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
24830 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le module..     
24840 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
24850 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24860 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
24870 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c  s.module = modul
24880 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
24890 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
248a0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
248b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
248c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24900 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
24910 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74  ion Private Stat
24920 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
24930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
24940 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
24950 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
24960 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73  table error mess
24970 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20  age to one that 
24980 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e 61  indicates the na
24990 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
249a0 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70    /// module imp
249b0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e  lementation is n
249c0 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
249d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
249e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
249f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
24a00 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
24a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24a20 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
24a30 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
24a40 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
24a50 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
24a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24a70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
24a80 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
24a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24aa0 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73   The value of <s
24ab0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45  ee cref="SQLiteE
24ac0 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20  rrorCode.Error" 
24ad0 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  />...           
24ae0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
24af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
24b00 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69  vate static SQLi
24b10 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75  teErrorCode Modu
24b20 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
24b30 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
24b40 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
24b50 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
24b60 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
24b70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24b80 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
24b90 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70  bleError(null, p
24ba0 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67  Vtab, DefaultLog
24bb0 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
24bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66               Def
24bd0 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e  aultLogException
24be0 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  s, ModuleNotAvai
24bf0 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67  lableErrorMessag
24c00 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
24c10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
24c20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
24c30 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
24c40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
24c50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
24c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
24ca0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
24cb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
24cc0 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61   /// Sets the ta
24cd0 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ble error messag
24ce0 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e  e to one that in
24cf0 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69  dicates the nati
24d00 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
24d10 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  /// module imple
24d20 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74  mentation is not
24d30 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
24d40 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
24d50 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24d60 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
24d70 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
24d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24d90 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
24da0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
24db0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
24dc0 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
24dd0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
24de0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
24df0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24e00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
24e10 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
24e20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
24e30 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ue of <see cref=
24e40 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  "SQLiteErrorCode
24e50 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20  .Error" />...   
24e60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
24e70 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
24e80 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
24e90 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  tic SQLiteErrorC
24ea0 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ode ModuleNotAva
24eb0 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
24ec0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
24ed0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
24ee0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
24ef0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
24f00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24f10 20 20 20 20 20 20 53 65 74 43 75 72 73 6f 72 45        SetCursorE
24f20 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73  rror(null, pCurs
24f30 6f 72 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72  or, DefaultLogEr
24f40 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
24f50 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75             Defau
24f60 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  ltLogExceptions,
24f70 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
24f80 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
24f90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24fa0 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
24fb0 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
24fc0 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
24fd0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
24fe0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
24ff0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
25000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25040 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
25050 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
25060 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d  eModule Members.
25070 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25080 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25090 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
250a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
250b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
250c0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
250d0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
250e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
250f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25100 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25110 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
25120 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25130 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25140 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25150 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
25160 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25170 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25180 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25190 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
251a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
251b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
251c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
251d0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
251e0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
251f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25200 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
25210 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25220 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
25230 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
25240 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25250 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25260 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
25270 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
25280 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
25290 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
252a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
252b0 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
252c0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
252d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
252e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
252f0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
25300 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25310 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25320 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25330 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
25340 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
25350 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25360 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25370 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
25380 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
25390 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
253a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
253b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
253c0 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
253d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
253e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
253f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25400 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
25410 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
25420 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
25430 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
25440 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
25450 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25460 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25470 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25480 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
25490 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
254a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
254b0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
254c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
254d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
254e0 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
254f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25500 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
25510 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
25520 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25530 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
25540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
25550 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
25560 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
25570 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
25580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25590 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
255a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
255b0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
255c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
255d0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
255e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
255f0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
25600 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
25610 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
25620 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
25630 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
25640 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
25650 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25660 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
25670 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
25680 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25690 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
256a0 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
256b0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
256c0 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
256d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256e0 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c    ModuleNotAvail
256f0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
25700 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
25710 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25720 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
25730 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
25740 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
25750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25760 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65  turn module.xCre
25770 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
25780 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
25790 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  Aux, argc, argv,
257a0 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20   ref pVtab, ref 
257b0 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
257c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
257d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
257e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25820 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
25830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25840 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25850 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25860 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25870 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
25880 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
25890 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
258a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
258b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
258c0 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Db">..          
258d0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
258e0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
258f0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
25900 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
25910 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25920 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25930 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
25940 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e  ram name="pAux">
25950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25960 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25970 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25980 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
25990 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
259a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
259b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
259c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
259d0 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
259e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
259f0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25a00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25a10 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
25a20 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
25a30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
25a40 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
25a50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
25a60 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
25a70 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
25a80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
25a90 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
25aa0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
25ab0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25ac0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25ae0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
25af0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
25b00 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25b10 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
25b20 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
25b30 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
25b40 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25b50 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25b60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25b70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f  aram name="pErro
25b80 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
25b90 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25ba0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25bb0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
25bc0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
25bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25be0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
25bf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
25c00 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
25c10 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25c20 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
25c30 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
25c40 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
25c50 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25c60 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
25c70 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
25c80 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
25c90 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
25ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
25cb0 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
25cc0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
25cd0 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
25ce0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
25cf0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
25d00 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
25d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25d20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
25d30 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
25d40 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
25d50 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
25d60 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
25d70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25d80 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
25d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25da0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
25db0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
25dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
25dd0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
25de0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
25df0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
25e00 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
25e10 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
25e20 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
25e30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
25e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e50 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
25e60 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
25e70 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  PtrFromString(..
25e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e90 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f          ModuleNo
25ea0 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
25eb0 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  essage);....    
25ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ed0 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
25ee0 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
25ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
25f00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25f10 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
25f20 65 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  e.xConnect(..   
25f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f40 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67 63   pDb, pAux, argc
25f50 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74 61  , argv, ref pVta
25f60 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d  b, ref pError);.
25f70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
25f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fd0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
25fe0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
25ff0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26000 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26010 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26020 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
26030 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
26040 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26050 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
26060 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26070 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
26080 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26090 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
260a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
260b0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
260c0 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
260d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
260e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
260f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
26100 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
26110 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26120 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26130 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26140 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
26150 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
26160 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26170 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26180 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
26190 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
261a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
261b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
261c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
261d0 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
261e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
261f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
26200 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
26210 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
26220 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
26230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26240 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
26250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
26260 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
26270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
26280 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
26290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
262b0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
262c0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
262d0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
262e0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
262f0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
26300 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
26310 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
26320 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
26330 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
26340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26350 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
26360 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
26370 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
26380 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26390 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
263a0 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70 56  le.xBestIndex(pV
263b0 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20  tab, pIndex);.. 
263c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
263d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
263e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26420 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26430 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
26440 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26450 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26460 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26470 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
26480 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26490 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
264a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
264b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
264c0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
264d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
264e0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
264f0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26500 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
26510 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
26520 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26530 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26540 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
26550 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
26560 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
26570 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26580 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
26590 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
265a0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
265b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
265c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
265d0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
265e0 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28  ode xDisconnect(
265f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26600 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
26610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26620 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
26630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26640 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
26650 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
26660 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
26670 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
26680 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
26690 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
266a0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
266b0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
266c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
266d0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
266e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
266f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
26700 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
26710 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
26720 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
26730 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
26740 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
26750 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
26760 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
26770 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
26780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
267c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
267d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
267e0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
267f0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
26800 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
26810 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
26820 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26830 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
26840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26850 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
26860 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
26870 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26880 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26890 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
268a0 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68  Destroy" /> meth
268b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
268c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
268d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
268e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
268f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26900 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26910 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26920 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
26930 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26940 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
26950 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
26960 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
26970 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
26980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26990 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
269a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
269b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
269c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
269d0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
269e0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
269f0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
26a00 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
26a10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
26a20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
26a30 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
26a40 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
26a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
26a60 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
26a70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26a80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
26a90 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
26aa0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
26ab0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
26ac0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
26ad0 75 6c 65 2e 78 44 65 73 74 72 6f 79 28 70 56 74  ule.xDestroy(pVt
26ae0 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
26af0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
26b00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
26b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
26b50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
26b60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
26b70 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
26b80 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26b90 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
26ba0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
26bb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26bc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
26bd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26be0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
26bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26c00 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26c10 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26c20 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
26c30 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
26c50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
26c60 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26c70 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
26c80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26c90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26ca0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26cb0 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
26cc0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26cd0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
26ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26cf0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
26d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26d10 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26d20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26d30 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
26d40 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26d50 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
26d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
26d70 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
26d80 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
26d90 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
26da0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
26db0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
26dc0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
26dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26de0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
26df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26e00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
26e10 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
26e20 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
26e30 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
26e40 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
26e50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
26e60 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
26e70 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
26e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
26e90 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
26ea0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
26eb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
26ec0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
26ed0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
26ee0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
26ef0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
26f00 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61 62  dule.xOpen(pVtab
26f10 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b 0d  , ref pCursor);.
26f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f80 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
26f90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26fa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26fb0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26fc0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26fd0 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
26fe0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
27000 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
27010 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27020 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
27030 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
27040 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
27050 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
27060 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
27070 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27080 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27090 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
270a0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
270b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
270c0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
270d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
270e0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
270f0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27100 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
27110 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
27120 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
27130 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28  rrorCode xClose(
27140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27150 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
27160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27170 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
27180 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27190 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
271a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
271b0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
271c0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
271d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
271e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
271f0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
27200 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
27210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27220 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
27230 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
27240 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27250 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
27260 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
27270 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
27280 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
27290 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  rn module.xClose
272a0 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
272b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
272c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
272d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27310 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27320 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27330 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27340 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27350 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27360 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
27370 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27380 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27390 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
273a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
273b0 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
273c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
273d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
273e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
273f0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
27400 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27410 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27420 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27430 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
27440 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20  xNum">..        
27450 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
27460 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27470 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27480 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
27490 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
274a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
274b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
274c0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74  aram name="idxSt
274d0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
274e0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
274f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
27500 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
27510 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
27520 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27530 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
27540 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27550 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
27560 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27570 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27580 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27590 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
275a0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
275b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
275c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
275d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
275e0 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
275f0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27600 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27610 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27620 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
27630 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27640 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27650 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27660 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
27670 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
27680 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27690 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
276a0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
276b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
276c0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
276d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
276e0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
276f0 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d  orCode xFilter(.
27700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27710 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
27720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27730 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
27750 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20  ntPtr idxStr,.. 
27760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27770 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
27780 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
27790 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20   argv..         
277a0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
277b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
277c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
277d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
277e0 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
277f0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
27800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27820 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
27830 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
27840 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
27850 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
27860 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
27870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27880 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
27890 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72  vailableCursorEr
278a0 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d  ror(pCursor);...
278b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
278c0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
278d0 46 69 6c 74 65 72 28 70 43 75 72 73 6f 72 2c 20  Filter(pCursor, 
278e0 69 64 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c 20  idxNum, idxStr, 
278f0 61 72 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20 20  argc, argv);..  
27900 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
27910 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
27920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27970 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
27980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27990 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
279a0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
279b0 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65  ule.xNext" /> me
279c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
279d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
279e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
279f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
27a00 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
27a10 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27a20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27a30 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27a40 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
27a50 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27a60 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27a70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27a80 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27a90 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27aa0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27ab0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27ac0 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f  .xNext" /> metho
27ad0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27ae0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
27af0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
27b00 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
27b10 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
27b20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
27b30 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
27b40 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
27b50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27b60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27b80 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
27b90 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
27ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27bb0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27bc0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
27bd0 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
27be0 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
27bf0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
27c00 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
27c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
27c30 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
27c40 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
27c50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27c60 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
27c70 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f 72  le.xNext(pCursor
27c80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
27c90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27ca0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ce0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
27cf0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
27d00 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27d10 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27d20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27d30 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20  iveModule.xEof" 
27d40 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
27d60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27d70 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
27d80 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
27d90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27da0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27db0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27dc0 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
27dd0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
27de0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
27df0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27e00 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
27e10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
27e20 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
27e30 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27e40 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65  dule.xEof" /> me
27e50 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27e60 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
27e70 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
27e80 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28 0d  ublic int xEof(.
27e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27ea0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
27eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27ec0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
27ed0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27ee0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
27ef0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
27f00 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
27f10 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
27f20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
27f30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
27f40 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
27f50 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
27f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f70 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
27f80 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
27f90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27fa0 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75              Modu
27fb0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
27fc0 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
27fd0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
27fe0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27ff0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
28000 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28010 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
28020 6d 6f 64 75 6c 65 2e 78 45 6f 66 28 70 43 75 72  module.xEof(pCur
28030 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  sor);..         
28040 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
28050 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
28060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28090 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
280a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
280b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
280c0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
280d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
280e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
280f0 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
28100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28110 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
28120 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28130 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
28140 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
28150 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28160 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28170 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
28180 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
28190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
281a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
281b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
281c0 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78  am name="pContex
281d0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t">..           
281e0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
281f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28200 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
28210 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  umn" /> method..
28220 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28230 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
28240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28250 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
28260 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28270 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28280 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28290 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
282a0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
282b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
282c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
282d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
282e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
282f0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28300 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28310 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
28320 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28330 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28340 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28350 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
28360 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
28370 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  lumn(..         
28380 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
28390 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
283a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
283b0 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20  Context,..      
283c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
283d0 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
283e0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
283f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28400 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
28420 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
28430 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
28440 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28460 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
28470 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
28480 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28490 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
284a0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
284b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
284c0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
284d0 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
284e0 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
284f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28500 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f  eturn module.xCo
28510 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70 43  lumn(pCursor, pC
28520 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b 0d  ontext, index);.
28530 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
28540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28590 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
285a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
285b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
285c0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
285d0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
285e0 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
285f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28600 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
28610 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
28620 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28630 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
28640 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28650 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28660 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28670 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e  odule.xRowId" />
28680 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28690 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
286a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
286b0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
286c0 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
286d0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
286e0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
286f0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28700 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
28710 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28720 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28730 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28740 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28750 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28760 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28770 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28780 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
28790 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
287a0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
287b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
287c0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
287d0 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
287e0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
287f0 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
28800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
28810 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
28820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
28830 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
28840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28850 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
28860 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
28870 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
28880 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
28890 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
288a0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
288b0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
288c0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
288d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
288e0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
288f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28900 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
28910 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
28920 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
28930 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
28940 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
28950 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75  odule.xRowId(pCu
28960 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29  rsor, ref rowId)
28970 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
28980 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
289e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
289f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28a00 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28a10 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28a20 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
28a30 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28a40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28a50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28a60 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
28a70 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
28a80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28a90 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
28aa0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
28ab0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
28ac0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28ae0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
28af0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28b00 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
28b10 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28b20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28b30 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28b40 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
28b50 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28b60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28b80 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
28b90 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
28ba0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28bb0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28bc0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
28bd0 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
28be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28bf0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28c10 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
28c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28c30 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28c40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28c50 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
28c60 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28c70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28c80 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28c90 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
28ca0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28cb0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28cc0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28cd0 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
28ce0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
28cf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28d00 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
28d10 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
28d20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
28d30 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
28d40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
28d50 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
28d60 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
28d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28d80 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
28d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28da0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
28db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28dc0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
28dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28de0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28df0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
28e00 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
28e10 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
28e20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28e30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
28e40 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
28e50 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
28e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28e70 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
28e80 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
28e90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
28ea0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
28eb0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
28ec0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
28ed0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
28ee0 64 75 6c 65 2e 78 55 70 64 61 74 65 28 70 56 74  dule.xUpdate(pVt
28ef0 61 62 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20  ab, argc, argv, 
28f00 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20  ref rowId);..   
28f10 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
28f20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
28f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28f70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28f80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
28f90 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28fa0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28fb0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28fc0 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65  le.xBegin" /> me
28fd0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28fe0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28ff0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29000 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29010 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
29020 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29030 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29040 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29050 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
29060 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29070 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29080 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
29090 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
290a0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
290b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
290c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
290d0 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
290e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
290f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
29100 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
29110 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
29120 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
29130 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29140 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
29150 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29160 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29170 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29190 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
291a0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
291b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
291c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
291d0 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
291e0 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
291f0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
29200 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
29210 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
29220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29230 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
29240 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
29250 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
29260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29270 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
29280 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20  Begin(pVtab);.. 
29290 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
292a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
292b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
292f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29300 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29310 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29320 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29330 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29340 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
29350 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29360 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
29370 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29380 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29390 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
293a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
293b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
293c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
293d0 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
293e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
293f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29400 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
29410 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
29420 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29430 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29440 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29450 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64  xSync" /> method
29460 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29470 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
29480 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
29490 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
294a0 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
294b0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
294c0 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
294d0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
294e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
294f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
29500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29510 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
29520 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
29530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29540 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29550 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
29560 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
29570 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
29580 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
29590 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
295a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295b0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
295c0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
295d0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
295e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
295f0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79  eturn module.xSy
29600 6e 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  nc(pVtab);..    
29610 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29620 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29670 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29680 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
29690 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
296a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
296b0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
296c0 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
296d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
296e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
296f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29700 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29710 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
29720 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29730 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29740 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29750 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
29760 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29770 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
29780 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29790 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
297a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
297b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
297c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
297d0 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
297e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
297f0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
29800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
29810 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
29820 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
29830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
29840 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
29850 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
29860 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29880 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29890 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
298a0 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
298b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
298c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
298d0 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
298e0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
298f0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
29900 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29910 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
29920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29930 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
29940 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
29950 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
29960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29970 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
29980 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74 61 62 29  e.xCommit(pVtab)
29990 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
299a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
299b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
29a00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
29a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29a20 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29a30 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29a40 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
29a50 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
29a60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29a70 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
29a80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29a90 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
29aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29ab0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29ac0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29ad0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
29ae0 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
29af0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29b00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
29b10 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
29b20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
29b30 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29b40 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
29b50 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
29b60 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64  lback" /> method
29b70 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29b80 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
29b90 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
29ba0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
29bb0 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  e xRollback(..  
29bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
29bd0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
29be0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
29bf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29c20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
29c30 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
29c40 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29c50 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
29c60 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
29c70 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
29c80 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
29c90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
29ca0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
29cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29cc0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
29cd0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
29ce0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
29cf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29d00 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
29d10 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62  .xRollback(pVtab
29d20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29d30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
29d40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
29d90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
29da0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29db0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29dc0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29dd0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
29de0 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
29df0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29e00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
29e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29e20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
29e30 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
29e40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29e50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29e60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
29e70 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
29e80 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29e90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29ea0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29eb0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29ec0 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  nArg">..        
29ed0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29ee0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29ef0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29f00 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
29f10 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29f20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29f30 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
29f40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29f50 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  "zName">..      
29f60 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29f70 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29f80 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29f90 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
29fa0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29fc0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29fd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29fe0 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20  e="callback">.. 
29ff0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2a000 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2a010 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2a020 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2a030 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
2a040 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a050 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2a060 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2a070 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44  m name="pClientD
2a080 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ata">..         
2a090 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2a0a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2a0b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2a0c0 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
2a0d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2a0e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2a0f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a100 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2a110 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2a120 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2a130 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2a140 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2a150 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
2a160 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a170 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2a180 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2a190 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
2a1a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a1b0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2a1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a1d0 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2a1f0 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20  Ptr zName,..    
2a200 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2a210 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
2a220 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
2a230 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
2a240 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
2a250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a260 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2a270 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a280 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2a290 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2a2a0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
2a2b0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
2a2c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2a2e0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2a2f0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
2a300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a310 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2a320 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2a330 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a340 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
2a350 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2a360 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2a370 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2a380 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b         return 0;
2a390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a3a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2a3b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2a3c0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2a3d0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2a3e0 20 20 20 20 20 20 20 20 20 70 56 74 61 62 2c 20           pVtab, 
2a3f0 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66  nArg, zName, ref
2a400 20 63 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70   callback, ref p
2a410 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20  ClientData);..  
2a420 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2a430 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a490 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2a4a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a4b0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a4c0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a4d0 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
2a4e0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2a4f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2a500 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2a510 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2a520 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2a530 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2a540 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2a550 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2a560 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
2a570 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a580 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a590 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a5a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
2a5b0 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ew">..          
2a5c0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2a5d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2a5e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
2a5f0 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  name" /> method.
2a600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a610 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2a620 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2a630 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2a640 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2a650 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2a660 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2a670 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
2a680 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a690 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2a6a0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2a6b0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2a6c0 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  e xRename(..    
2a6d0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a6e0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2a6f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2a700 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20 20  r zNew..        
2a710 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2a720 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a730 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2a740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a750 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2a760 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a780 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2a790 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2a7a0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2a7b0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2a7c0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2a7d0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2a7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a7f0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2a800 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2a810 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
2a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2a830 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65  eturn module.xRe
2a840 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65 77  name(pVtab, zNew
2a850 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2a860 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2a870 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2a8c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2a8d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a8e0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2a8f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2a900 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
2a910 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  oint" /> method.
2a920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a930 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2a940 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2a950 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2a960 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2a970 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2a980 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2a990 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
2a9a0 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
2a9b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a9c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2a9d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2a9e0 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
2a9f0 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
2aa00 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2aa10 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2aa20 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2aa30 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
2aa40 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2aa50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2aa60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2aa70 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2aa80 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2aa90 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2aaa0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2aab0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
2aac0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2aad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2aae0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2aaf0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2ab00 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70  ErrorCode xSavep
2ab10 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
2ab20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2ab30 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2ab40 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
2ab50 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
2ab60 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2ab70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ab80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2ab90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2aba0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
2abb0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
2abc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2abd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2abe0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2abf0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
2ac00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2ac10 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2ac20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2ac30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ac40 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2ac50 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
2ac60 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
2ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2ac80 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65  urn module.xSave
2ac90 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53 61  point(pVtab, iSa
2aca0 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
2acb0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2acc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2ad10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ad20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ad30 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2ad40 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2ad50 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2ad60 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
2ad70 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2ad80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2ad90 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ada0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2adb0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2adc0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2add0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2ade0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2adf0 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
2ae00 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ae10 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2ae20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ae30 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61  <param name="iSa
2ae40 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
2ae50 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2ae60 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ae70 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ae80 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
2ae90 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2aea0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2aeb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2aec0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2aed0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2aee0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2aef0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2af00 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e  ule.xRelease" />
2af10 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2af20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2af30 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2af40 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2af50 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
2af60 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2af70 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2af80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2af90 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
2afa0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
2afb0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2afc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2afd0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2afe0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2aff0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
2b000 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
2b010 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2b020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b030 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2b040 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
2b050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b060 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
2b070 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2b080 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2b090 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
2b0a0 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
2b0b0 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
2b0c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2b0d0 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65   module.xRelease
2b0e0 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69  (pVtab, iSavepoi
2b0f0 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt);..          
2b100 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2b110 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b150 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2b160 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2b170 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b180 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2b190 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2b1a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2b1b0 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
2b1c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2b1d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2b1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b1f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2b200 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2b210 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2b220 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b230 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2b240 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65  ollbackTo" /> me
2b250 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2b260 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2b270 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b280 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
2b290 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
2b2a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2b2b0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2b2c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2b2d0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
2b2e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2b2f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2b300 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2b310 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2b320 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b330 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2b340 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2b350 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2b360 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  kTo" /> method..
2b370 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b380 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2b390 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2b3a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2b3b0 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
2b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2b3d0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
2b3f0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
2b400 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2b410 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b430 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2b440 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
2b450 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
2b460 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2b470 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2b480 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2b490 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
2b4a0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
2b4b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2b4c0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2b4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b4e0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2b4f0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
2b500 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
2b510 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2b520 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2b530 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56  e.xRollbackTo(pV
2b540 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
2b550 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2b560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2b570 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2b580 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b5d0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2b5e0 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
2b5f0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
2b600 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2b610 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b620 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
2b630 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2b640 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
2b650 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2b660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2b670 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
2b680 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
2b690 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b6a0 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
2b6b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2b6c0 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
2b6d0 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
2b6e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2b6f0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2b700 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2b710 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b750 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2b760 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2b770 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
2b780 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
2b790 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2b7a0 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
2b7b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;..            /
2b7c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2b7d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2b7e0 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
2b7f0 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
2b800 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
2b810 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
2b820 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69             /// i
2b830 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
2b840 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
2b850 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2b860 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2b870 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
2b880 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2b890 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2b8a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2b8b0 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
2b8c0 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
2b8d0 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
2b8e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b8f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b900 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2b910 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
2b920 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
2b930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b940 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
2b950 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29  iteNativeModule)
2b960 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
2b970 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2b980 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2b990 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2b9a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b9f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ba00 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ba10 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
2ba20 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2ba30 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
2ba40 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2ba50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ba60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
2ba70 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20  isposing">..    
2ba80 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
2ba90 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  zero if this met
2baa0 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
2bab0 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  led from the..  
2bac0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2bad0 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65  ee cref="Dispose
2bae0 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20  ()" /> method.  
2baf0 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  Zero if this met
2bb00 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a 20 20  hod is being..  
2bb10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61            /// ca
2bb20 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20 66 69  lled from the fi
2bb30 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20  nalizer...      
2bb40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2bb50 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2bb60 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65  private /* prote
2bb70 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20  cted virtual */ 
2bb80 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
2bb90 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
2bba0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2bbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2bbc0 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
2bbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbf0 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
2bc00 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
2bc10 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
2bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc30 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc70 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70     //    // disp
2bc80 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
2bc90 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
2bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcb0 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcf0 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20     //}....      
2bd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd30 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
2bd40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
2bd50 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
2bd60 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
2bd70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bd80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2bd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bdc0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2bdd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2bde0 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20  OTE: The module 
2bdf0 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20  is not owned by 
2be00 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 64  us; therefore, d
2be10 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 20  o not..         
2be20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2be30 20 20 20 20 64 69 73 70 6f 73 65 20 69 74 2e 0d      dispose it..
2be40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2be50 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2be60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2be70 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29  (module != null)
2be80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2be90 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2bea0 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
2beb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bec0 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
2bed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bee0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2bef0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2bf00 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2bf10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2bf60 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
2bf70 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
2bf80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bf90 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2bfa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61          /// Fina
2bfb0 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63  lizes this objec
2bfc0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2bfd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2bfe0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2bff0 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61 74 69       ~SQLiteNati
2c000 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2c010 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c020 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
2c030 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
2c040 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c050 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2c060 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
2c070 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2c080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2c0e0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
2c0f0 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
2c100 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2c110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2c120 20 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f 6e   default version
2c130 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73   of the native s
2c140 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2c150 72 75 63 74 75 72 65 20 69 6e 20 75 73 65 2e 0d  ructure in use..
2c160 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2c170 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c180 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2c190 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66  readonly int Def
2c1a0 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f  aultModuleVersio
2c1b0 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20 20  n = 2;..        
2c1c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2c1d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c220 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
2c230 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
2c240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2c250 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2c260 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
2c270 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2c280 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2c290 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2c2a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
2c2b0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2c2c0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2c2d0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
2c2e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2c2f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
2c300 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2c310 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2c320 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a   nativeModule;..
2c330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c380 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2c390 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2c3a0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2c3b0 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
2c3c0 6f 72 65 20 74 68 65 20 64 65 73 74 72 75 63 74  ore the destruct
2c3d0 6f 72 20 64 65 6c 65 67 61 74 65 20 74 6f 20 62  or delegate to b
2c3e0 65 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20 20  e passed to..   
2c3f0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
2c400 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
2c410 20 76 69 61 20 74 68 65 20 73 71 6c 69 74 65 33   via the sqlite3
2c420 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2c430 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  le_module()..   
2c440 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f       /// functio
2c450 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
2c460 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2c470 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61      private Unsa
2c480 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2c490 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 64  xDestroyModule d
2c4a0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d  estroyModule;...
2c4b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2c510 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c520 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2c530 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2c540 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  re a pointer to 
2c550 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
2c560 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
2c570 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
2c580 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
2c590 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
2c5a0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2c5b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
2c5c0 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
2c5d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2c5e0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2c5f0 65 20 49 6e 74 50 74 72 20 64 69 73 70 6f 73 61  e IntPtr disposa
2c600 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20  bleModule;....  
2c610 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c660 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2c670 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2c680 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2c690 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2c6a0 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2c6b0 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68   used to hold th
2c6c0 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69 76  e block of nativ
2c6d0 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 63 6f  e memory that co
2c6e0 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20 20 20  ntains..        
2c6f0 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65 20 73  /// the native s
2c700 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2c710 72 75 63 74 75 72 65 20 61 73 73 6f 63 69 61 74  ructure associat
2c720 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a  ed with this obj
2c730 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
2c740 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72   instance when r
2c750 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e  unning on the .N
2c760 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
2c770 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  work...        /
2c780 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2c790 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
2c7a0 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d 6f 64  ntPtr pNativeMod
2c7b0 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ule;..#endif....
2c7c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c810 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2c820 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2c830 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2c840 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2c850 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2c860 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20 61 73  ble instances as
2c870 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
2c880 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
2c890 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74  module.  The nat
2c8a0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
2c8b0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
2c8c0 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
2c8d0 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69   /// structure i
2c8e0 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e  s used to key in
2c8f0 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74 69  to this collecti
2c900 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2c910 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2c920 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69 63       private Dic
2c930 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20  tionary<IntPtr, 
2c940 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
2c950 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20  le> tables;.... 
2c960 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c9b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2c9c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c9d0 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
2c9e0 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65  is used to store
2c9f0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
2ca00 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74 61 6e  le cursor instan
2ca10 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ces..        ///
2ca20 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2ca30 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54   this module.  T
2ca40 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
2ca50 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  r to the..      
2ca60 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74    /// sqlite3_vt
2ca70 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
2ca80 64 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  d structure is u
2ca90 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20  sed to key into 
2caa0 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
2cab0 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  / collection... 
2cac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2cad0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2cae0 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2caf0 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2cb00 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
2cb10 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a  or> cursors;....
2cb20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2cb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2cb70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2cb80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2cb90 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2cba0 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2cbb0 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2cbc0 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73  ble function ins
2cbd0 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20  tances..        
2cbe0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
2cbf0 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e  ith this module.
2cc00 20 20 54 68 65 20 63 61 73 65 2d 69 6e 73 65 6e    The case-insen
2cc10 73 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 20  sitive function 
2cc20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  name..        //
2cc30 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72  / and the number
2cc40 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 28 77   of arguments (w
2cc50 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20 22  ith -1 meaning "
2cc60 61 6e 79 22 29 20 61 72 65 20 75 73 65 64 20 74  any") are used t
2cc70 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  o..        /// c
2cc80 6f 6e 73 74 72 75 63 74 20 74 68 65 20 73 74 72  onstruct the str
2cc90 69 6e 67 20 74 68 61 74 20 69 73 20 75 73 65 64  ing that is used
2cca0 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69   to key into thi
2ccb0 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  s collection... 
2ccc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2ccd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2cce0 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2ccf0 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74 65  y<string, SQLite
2cd00 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74 69  Function> functi
2cd10 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  ons;..        #e
2cd20 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2cd30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2cd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2cd80 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2cd90 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f  ublic Constructo
2cda0 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
2cdb0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2cdc0 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
2cdd0 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
2cde0 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
2cdf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2ce00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2ce10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
2ce20 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ame">..        /
2ce30 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
2ce40 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69 73  he module.  This
2ce50 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f   parameter canno
2ce60 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t be null...    
2ce70 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2ce80 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2ce90 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73 74   SQLiteModule(st
2cea0 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20 20  ring name)..    
2ceb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2cec0 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
2ced0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2cee0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2cef0 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
2cf00 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a  ption("name");..
2cf10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2cf20 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d  is.name = name;.
2cf30 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
2cf40 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65 77 20 44  s.tables = new D
2cf50 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72  ictionary<IntPtr
2cf60 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  , SQLiteVirtualT
2cf70 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20 20  able>();..      
2cf80 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 73 6f        this.curso
2cf90 72 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  rs = new Diction
2cfa0 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69  ary<IntPtr, SQLi
2cfb0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
2cfc0 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20  rsor>();..      
2cfd0 20 20 20 20 20 20 74 68 69 73 2e 66 75 6e 63 74        this.funct
2cfe0 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69 63 74 69  ions = new Dicti
2cff0 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51  onary<string, SQ
2d000 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29 3b  LiteFunction>();
2d010 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2d020 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2d030 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2d040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d080 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2d090 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d  egion Internal M
2d0a0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2d0b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2d0c0 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73         /// Calls
2d0d0 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
2d0e0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2d0f0 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 72 65 61  in order to crea
2d100 74 65 20 61 20 6e 65 77 0d 0a 20 20 20 20 20 20  te a new..      
2d110 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c 65    /// disposable
2d120 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69   module containi
2d130 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  ng the implement
2d140 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75  ation of a virtu
2d150 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
2d160 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2d170 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2d180 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22  param name="pDb"
2d190 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2d1a0 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62 61  he native databa
2d1b0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f  se connection po
2d1c0 69 6e 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20  inter to use... 
2d1d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2d1e0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2d1f0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2d200 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
2d210 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
2d220 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2d230 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2d240 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43 72  internal bool Cr
2d250 65 61 74 65 44 69 73 70 6f 73 61 62 6c 65 4d 6f  eateDisposableMo
2d260 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
2d270 20 20 20 49 6e 74 50 74 72 20 70 44 62 0d 0a 20     IntPtr pDb.. 
2d280 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2d290 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d2a0 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 61       if (disposa
2d2b0 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74  bleModule != Int
2d2c0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2d2d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d2e0 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  n true;....     
2d2f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e         IntPtr pN
2d300 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ame = IntPtr.Zer
2d310 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
2d320 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2d330 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d340 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 53 51        pName = SQ
2d350 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
2d360 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
2d370 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
2d380 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2d390 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2d3a0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74  lite3_module nat
2d3b0 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20  iveModule =..   
2d3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3d0 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
2d3e0 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  odule();....    
2d3f0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 74              dest
2d400 72 6f 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20  royModule = new 
2d410 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2d420 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75  ods.xDestroyModu
2d430 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2d440 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f           xDestro
2d450 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66  yModule);....#if
2d460 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2d470 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2d480 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
2d490 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d  posableModule =.
2d4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d4b0 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
2d4c0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2d4d0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2d4e0 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  le_module(..    
2d4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d500 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20      pDb, pName, 
2d510 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ref nativeModule
2d520 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64  , IntPtr.Zero, d
2d530 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a  estroyModule);..
2d540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d550 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f 73    return (dispos
2d560 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
2d570 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c  tPtr.Zero);..#el
2d580 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
2d590 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
2d5a0 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d       disposableM
2d5b0 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  odule =..       
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
2d5d0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2d5e0 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  .sqlite3_create_
2d5f0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2d600 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20  e_interop(..    
2d610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d620 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 41     pDb, pName, A
2d630 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64  llocateNativeMod
2d640 75 6c 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a 20  uleInterop(),.. 
2d650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d660 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2d670 6c 65 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61 74  le.iVersion, nat
2d680 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2d690 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2d6a0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2d6b0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
2d6c0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2d6d0 42 65 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20 20  BestIndex,..    
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6f0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2d700 78 44 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61 74  xDisconnect, nat
2d710 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2d720 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
2d730 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2d740 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c 20  veModule.xOpen, 
2d750 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  nativeModule.xCl
2d760 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ose,..          
2d770 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d780 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
2d790 72 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  r, nativeModule.
2d7a0 78 4e 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  xNext,..        
2d7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2d7c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
2d7d0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2d7e0 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20  Column,..       
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d800 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2d810 77 49 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  wId, nativeModul
2d820 65 2e 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20  e.xUpdate,..    
2d830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d840 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2d850 78 42 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d 6f  xBegin, nativeMo
2d860 64 75 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20 20  dule.xSync,..   
2d870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d880 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d890 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76 65  .xCommit, native
2d8a0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2d8b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d8c0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2d8d0 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
2d8e0 74 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75  tion, nativeModu
2d8f0 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20 20  le.xRename,..   
2d900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d910 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d920 2e 78 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61 74  .xSavepoint, nat
2d930 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2d940 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
2d950 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2d960 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2d970 63 6b 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ckTo, IntPtr.Zer
2d980 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65  o, destroyModule
2d990 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2d9a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 69        return (di
2d9b0 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21  sposableModule !
2d9c0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2d9d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2d9e0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
2d9f0 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
2da00 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
2da10 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2da20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2da30 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
2da40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2da50 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61           if (pNa
2da60 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  me != IntPtr.Zer
2da70 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2da80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2da90 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2daa0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61  eMemory.Free(pNa
2dab0 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
2dac0 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20            pName 
2dad0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
2dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2daf0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2db00 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2db10 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2db20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db70 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2db80 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
2db90 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
2dba0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2dbb0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
2dbc0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
2dbd0 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
2dbe0 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20  re library when 
2dbf0 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
2dc00 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61      /// module a
2dc10 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2dc20 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2dc30 6e 63 65 20 69 73 20 62 65 69 6e 67 20 64 65 73  nce is being des
2dc40 74 72 6f 79 65 64 20 64 75 65 0d 0a 20 20 20 20  troyed due..    
2dc50 20 20 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20 70      /// to its p
2dc60 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
2dc70 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20 20   being closed.  
2dc80 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20 63  It may also be c
2dc90 61 6c 6c 65 64 20 62 79 0d 0a 20 20 20 20 20 20  alled by..      
2dca0 20 20 2f 2f 2f 20 74 68 65 20 22 76 74 73 68 69    /// the "vtshi
2dcb0 6d 22 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68 65  m" module if/whe
2dcc0 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64 69  n the sqlite3_di
2dcd0 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66  spose_module() f
2dce0 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  unction..       
2dcf0 20 2f 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e 0d   /// is called..
2dd00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2dd10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2dd20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2dd30 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
2dd40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2dd50 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
2dd60 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
2dd70 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
2dd80 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73  odule, as it was
2dd90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
2dda0 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
2ddb0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2ddc0 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
2ddd0 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63  e module instanc
2dde0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
2ddf0 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20  as created...   
2de00 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2de10 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2de20 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79  te void xDestroy
2de30 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  Module(..       
2de40 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69       IntPtr pCli
2de50 65 6e 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20 55  entData /* NOT U
2de60 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
2de70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
2de80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2de90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dea0 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
2deb0 6f 69 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65 20  oint, just make 
2dec0 73 75 72 65 20 74 68 61 74 20 74 68 69 73 20 6e  sure that this n
2ded0 61 74 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20 20  ative module..  
2dee0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2def0 20 20 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f 74     handle is not
2df00 20 72 65 75 73 65 64 2c 20 6e 6f 72 20 70 61 73   reused, nor pas
2df10 73 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61 74  sed into the nat
2df20 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
2df30 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2df40 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
2df50 28 29 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74 65  () function late
2df60 72 20 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e 0d  r (i.e. if/when.
2df70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
2df80 20 20 20 20 20 20 74 68 65 20 44 69 73 70 6f 73        the Dispos
2df90 65 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 74 68  e() method of th
2dfa0 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2dfb0 63 65 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d 0a  ce is called)...
2dfc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2dfd0 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
2dfe0 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20 49  osableModule = I
2dff0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2e000 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e010 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e050 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e060 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2e070 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2e080 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75  Creates and retu
2e090 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  rns the native s
2e0a0 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
2e0b0 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
2e0c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
2e0d0 6e 66 69 67 75 72 65 64 20 28 6f 72 20 64 65 66  nfigured (or def
2e0e0 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d  ault) <see cref=
2e0f0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2e100 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
2e110 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20    /// interface 
2e120 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
2e130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2e140 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2e150 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2e160 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2e170 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2e180 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2e190 73 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67 75  sing the configu
2e1a0 72 65 64 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  red (or..       
2e1b0 20 2f 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c 73   /// default) <s
2e1c0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2e1d0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
2e1e0 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   interface..    
2e1f0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
2e200 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
2e210 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2e220 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2e230 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e240 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2e250 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  ule AllocateNati
2e260 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2e270 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e280 20 20 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63 61     return Alloca
2e290 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 47  teNativeModule(G
2e2a0 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d  etNativeModuleIm
2e2b0 70 6c 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  pl());..        
2e2c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2e2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e310 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
2e320 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2e330 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f  EWORK..        /
2e340 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2e350 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
2e360 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  s and returns a 
2e370 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62 74  memory block obt
2e380 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53  ained from the S
2e390 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
2e3a0 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20      /// library 
2e3b0 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2e3c0 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2e3d0 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2e3e0 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20  e for this..    
2e3f0 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
2e400 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e  nstance when run
2e410 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54  ning on the .NET
2e420 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
2e430 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rk...        ///
2e440 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2e450 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2e460 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2e470 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2e480 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65  er to the native
2e490 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2e4a0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
2e4b0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2e4c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
2e4d0 61 74 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63  ate IntPtr Alloc
2e4e0 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  ateNativeModuleI
2e4f0 6e 74 65 72 6f 70 28 29 0d 0a 20 20 20 20 20 20  nterop()..      
2e500 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2e510 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75   if (pNativeModu
2e520 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
2e530 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2e540 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e550 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2e560 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
2e570 4e 6f 20 65 61 73 79 20 77 61 79 20 74 6f 20 64  No easy way to d
2e580 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a  etermine the siz
2e590 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
2e5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e5b0 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2e5c0 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2e5d0 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
2e5e0 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
2e5f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2e600 20 20 20 20 20 43 6f 6d 70 61 63 74 20 46 72 61       Compact Fra
2e610 6d 65 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f 72  mework; therefor
2e620 65 2c 20 6a 75 73 74 20 62 61 73 65 20 74 68 65  e, just base the
2e630 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20   size..         
2e640 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2e650 6f 6e 20 77 68 61 74 20 77 65 20 6b 6e 6f 77 3a  on what we know:
2e660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e670 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2e680 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54        //       T
2e690 68 65 72 65 20 69 73 20 6f 6e 65 20 69 6e 74 65  here is one inte
2e6a0 67 65 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ger member...   
2e6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2e6c0 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65 20        There are 
2e6d0 32 32 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  22 function poin
2e6e0 74 65 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20 20  ter members...  
2e6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2e700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e710 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20    pNativeModule 
2e720 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
2e730 6c 6c 6f 63 61 74 65 28 32 33 20 2a 20 49 6e 74  llocate(23 * Int
2e740 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
2e750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2e760 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20   (pNativeModule 
2e770 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
2e780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e790 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f       throw new O
2e7a0 75 74 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70 74  utOfMemoryExcept
2e7b0 69 6f 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f 64  ion("sqlite3_mod
2e7c0 75 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ule");..        
2e7d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2e7e0 20 20 20 20 20 72 65 74 75 72 6e 20 70 4e 61 74       return pNat
2e7f0 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  iveModule;..    
2e800 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
2e810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2e820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e860 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2e870 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2e880 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
2e890 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  nd returns the n
2e8a0 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64  ative sqlite_mod
2e8b0 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73  ule structure us
2e8c0 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
2e8d0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
2e8e0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2e8f0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
2e900 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
2e910 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
2e920 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2e930 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2e940 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2e950 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
2e960 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2e970 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2e980 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2e990 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
2e9a0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2e9b0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
2e9c0 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
2e9d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2e9e0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2e9f0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2ea00 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  The native sqlit
2ea10 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
2ea20 72 65 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  re using the spe
2ea30 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  cified..        
2ea40 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
2ea50 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2ea60 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65  le" /> interface
2ea70 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2ea80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2ea90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2eaa0 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
2eab0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2eac0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c  lite3_module All
2ead0 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  ocateNativeModul
2eae0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2eaf0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2eb00 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
2eb10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2eb20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2eb30 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d    nativeModule =
2eb40 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2eb50 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2eb60 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20 20  _module();..    
2eb70 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2eb80 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20  dule.iVersion = 
2eb90 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72  DefaultModuleVer
2eba0 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sion;....       
2ebb0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2ebc0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2ebd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ebe0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2ebf0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20  odule.xCreate = 
2ec00 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2ec10 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28  Methods.xCreate(
2ec20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ec30 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72 65       module.xCre
2ec40 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
2ec50 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2ec60 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d  odule.xConnect =
2ec70 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ec80 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63  eMethods.xConnec
2ec90 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2eca0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2ecb0 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  Connect);....   
2ecc0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2ecd0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
2ece0 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
2ecf0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2ed00 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2ed10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
2ed30 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
2ed40 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2ed50 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2ed60 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ed70 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2ed80 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2ed90 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2eda0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b  le.xDisconnect);
2edb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2edc0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2edd0 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20  .xDestroy = new 
2ede0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2edf0 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20  ods.xDestroy(.. 
2ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee10 20 20 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72     module.xDestr
2ee20 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  oy);....        
2ee30 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2ee40 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77  dule.xOpen = new
2ee50 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2ee60 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20  hods.xOpen(..   
2ee70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee80 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d   module.xOpen);.
2ee90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2eea0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2eeb0 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
2eec0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2eed0 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  .xClose(..      
2eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2eef0 64 75 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d  dule.xClose);...
2ef00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ef10 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2ef20 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
2ef30 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ef40 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2ef60 64 75 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d 0a  dule.xFilter);..
2ef70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ef80 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2ef90 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
2efa0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2efb0 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
2efc0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2efd0 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  e.xNext);....   
2efe0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2eff0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
2f000 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f010 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d 6f  eMethods.xEof(mo
2f020 64 75 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20  dule.xEof);.... 
2f030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2f040 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
2f050 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  umn = new Unsafe
2f060 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2f070 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
2f080 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2f090 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a  le.xColumn);....
2f0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0b0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2f0c0 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  wId = new Unsafe
2f0d0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2f0e0 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20  owId(..         
2f0f0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2f100 65 2e 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  e.xRowId);....  
2f110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2f120 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
2f130 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
2f140 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70  ativeMethods.xUp
2f150 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  date(..         
2f160 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2f170 65 2e 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20  e.xUpdate);.... 
2f180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2f190 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
2f1a0 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  in = new UnsafeN
2f1b0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
2f1c0 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
2f1d0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2f1e0 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20  .xBegin);....   
2f1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2f200 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20  iveModule.xSync 
2f210 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f220 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28  veMethods.xSync(
2f230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f240 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 79        module.xSy
2f250 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nc);....        
2f260 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2f270 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e  dule.xCommit = n
2f280 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f290 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d  ethods.xCommit(.
2f2a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f2b0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d       module.xCom
2f2c0 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  mit);....       
2f2d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2f2e0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20  odule.xRollback 
2f2f0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f300 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62  veMethods.xRollb
2f310 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
2f320 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2f330 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a  .xRollback);....
2f340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f350 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
2f360 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77  ndFunction = new
2f370 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f380 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69  hods.xFindFuncti
2f390 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2f3a0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2f3b0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d  xFindFunction);.
2f3c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f3d0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2f3e0 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e  xRename = new Un
2f3f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f400 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  s.xRename(..    
2f410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f420 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29 3b  module.xRename);
2f430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f440 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2f450 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65  .xSavepoint = ne
2f460 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f470 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74  thods.xSavepoint
2f480 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f490 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53         module.xS
2f4a0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2f4c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2f4d0 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ase = new Unsafe
2f4e0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2f4f0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
2f500 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2f510 75 6c 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d 0a  ule.xRelease);..
2f520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f530 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2f540 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
2f550 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f560 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
2f570 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f580 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
2f590 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20  ollbackTo);..   
2f5a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2f5b0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
2f5c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2f5e0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2f5f0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2f600 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65  tiveMethods.xCre
2f610 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
2f620 20 20 20 20 20 20 20 20 20 20 78 43 72 65 61 74            xCreat
2f630 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2f640 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2f650 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e  ule.xConnect = n
2f660 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f670 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28  ethods.xConnect(
2f680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f690 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 29 3b        xConnect);
2f6a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f6b0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2f6c0 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65  .xBestIndex = ne
2f6d0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f6e0 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78  thods.xBestIndex
2f6f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f700 20 20 20 20 20 20 20 78 42 65 73 74 49 6e 64 65         xBestInde
2f710 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
2f720 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2f730 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2f740 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f750 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2f760 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2f770 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69 73              xDis
2f780 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  connect);....   
2f790 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2f7a0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2f7b0 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  oy = new UnsafeN
2f7c0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
2f7d0 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
2f7e0 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65 73              xDes
2f7f0 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  troy);....      
2f800 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2f810 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
2f820 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f830 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f 70  ethods.xOpen(xOp
2f840 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  en);..          
2f850 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2f860 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20  le.xClose = new 
2f870 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2f880 6f 64 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f 73  ods.xClose(xClos
2f890 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2f8a0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2f8b0 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65  ule.xFilter = ne
2f8c0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f8d0 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a  thods.xFilter(..
2f8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f8f0 20 20 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d      xFilter);...
2f900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f910 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e   nativeModule.xN
2f920 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ext = new Unsafe
2f930 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e  NativeMethods.xN
2f940 65 78 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20 20  ext(xNext);..   
2f950 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2f960 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
2f970 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f980 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 78 45  eMethods.xEof(xE
2f990 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
2f9a0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2f9b0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e  dule.xColumn = n
2f9c0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f9d0 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d  ethods.xColumn(.
2f9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f9f0 20 20 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a       xColumn);..
2fa00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fa10 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2fa20 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61  RowId = new Unsa
2fa30 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2fa40 78 52 6f 77 49 64 28 78 52 6f 77 49 64 29 3b 0d  xRowId(xRowId);.
2fa50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2fa60 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2fa70 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e  xUpdate = new Un
2fa80 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2fa90 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  s.xUpdate(..    
2faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fab0 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
2fac0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2fad0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
2fae0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2faf0 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69  iveMethods.xBegi
2fb00 6e 28 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20 20  n(xBegin);..    
2fb10 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2fb20 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d  veModule.xSync =
2fb30 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2fb40 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 78  eMethods.xSync(x
2fb50 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Sync);....      
2fb60 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2fb70 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d  Module.xCommit =
2fb80 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2fb90 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74  eMethods.xCommit
2fba0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2fbb0 20 20 20 20 20 20 20 78 43 6f 6d 6d 69 74 29 3b         xCommit);
2fbc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fbd0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2fbe0 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77  .xRollback = new
2fbf0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2fc00 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d  hods.xRollback(.
2fc10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fc20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29 3b       xRollback);
2fc30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fc40 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2fc50 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d  .xFindFunction =
2fc60 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2fc70 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75  eMethods.xFindFu
2fc80 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
2fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69               xFi
2fca0 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  ndFunction);....
2fcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fcc0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  nativeModule.xRe
2fcd0 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  name = new Unsaf
2fce0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2fcf0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
2fd00 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65               xRe
2fd10 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
2fd20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2fd30 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
2fd40 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
2fd50 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76  tiveMethods.xSav
2fd60 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
2fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53 61               xSa
2fd80 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20  vepoint);....   
2fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2fda0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2fdb0 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
2fdc0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65  ativeMethods.xRe
2fdd0 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
2fde0 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65 6c              xRel
2fdf0 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
2fe00 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2fe10 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2fe20 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  To = new UnsafeN
2fe30 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2fe40 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
2fe50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2fe60 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20  RollbackTo);..  
2fe70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2fe80 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2fe90 6e 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d  n nativeModule;.
2fea0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2feb0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ff00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2ff10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ff20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 63 6f  /// Creates a co
2ff30 70 79 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  py of the specif
2ff40 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
2ff50 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
2ff60 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ff70 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20  sqlite3_module" 
2ff80 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
2ff90 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce,..        ///
2ffa0 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 20 69   using default i
2ffb0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66  mplementations f
2ffc0 6f 72 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64  or the contained
2ffd0 20 64 65 6c 65 67 61 74 65 73 20 77 68 65 6e 0d   delegates when.
2ffe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63  .        /// nec
2fff0 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  essary...       
30000 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
30010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
30020 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
30030 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
30040 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 55  The <see cref="U
30050 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30060 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
30070 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  e" /> object..  
30080 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
30090 63 65 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20 20  ce to copy...   
300a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
300b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
300c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
300d0 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
300e0 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
300f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
30100 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20  ite3_module" /> 
30110 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
30120 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
30130 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
30140 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
30150 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
30160 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
30170 65 33 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e 61  e3_module CopyNa
30180 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  tiveModule(..   
30190 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
301a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
301b0 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75  ite3_module modu
301c0 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
301d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
301e0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
301f0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
30200 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65 77  lite3_module new
30210 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
30220 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
30230 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30240 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
30250 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
30260 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56 65     newModule.iVe
30270 72 73 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69  rsion = module.i
30280 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20  Version;....    
30290 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
302a0 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20  e.xCreate = new 
302b0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
302c0 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ods.xCreate(..  
302d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
302e0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 21 3d  odule.xCreate !=
302f0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
30300 78 43 72 65 61 74 65 20 3a 20 78 43 72 65 61 74  xCreate : xCreat
30310 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
30320 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f     newModule.xCo
30330 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
30340 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
30350 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
30360 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
30370 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20 6e  le.xConnect != n
30380 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
30390 6f 6e 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65 63  onnect : xConnec
303a0 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
303b0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65     newModule.xBe
303c0 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e  stIndex = new Un
303d0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
303e0 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  s.xBestIndex(.. 
303f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
30400 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
30410 78 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  x != null) ? mod
30420 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3a  ule.xBestIndex :
30430 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d   xBestIndex);...
30440 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
30450 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
30460 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
30470 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69  ativeMethods.xDi
30480 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
30490 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
304a0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 21  le.xDisconnect !
304b0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
304c0 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a  .xDisconnect :..
304d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304e0 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  xDisconnect);...
304f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
30500 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  Module.xDestroy 
30510 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
30520 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72  veMethods.xDestr
30530 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
30540 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 65       (module.xDe
30550 73 74 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20 3f  stroy != null) ?
30560 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79   module.xDestroy
30570 20 3a 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d   : xDestroy);...
30580 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
30590 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
305a0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
305b0 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20  ethods.xOpen(.. 
305c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
305d0 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d 20  module.xOpen != 
305e0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
305f0 4f 70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a  Open : xOpen);..
30600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
30610 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d  wModule.xClose =
30620 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30630 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28  eMethods.xClose(
30640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30650 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65    (module.xClose
30660 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
30670 6c 65 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c 6f  le.xClose : xClo
30680 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
30690 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46      newModule.xF
306a0 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
306b0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
306c0 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
306d0 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
306e0 65 2e 78 46 69 6c 74 65 72 20 21 3d 20 6e 75 6c  e.xFilter != nul
306f0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6c  l) ? module.xFil
30700 74 65 72 20 3a 20 78 46 69 6c 74 65 72 29 3b 0d  ter : xFilter);.
30710 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
30720 65 77 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d  ewModule.xNext =
30730 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30740 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d  eMethods.xNext(.
30750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30760 20 28 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 21   (module.xNext !
30770 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
30780 2e 78 4e 65 78 74 20 3a 20 78 4e 65 78 74 29 3b  .xNext : xNext);
30790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
307a0 6e 65 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  newModule.xEof =
307b0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
307c0 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d 0a  eMethods.xEof(..
307d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307e0 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d 20  (module.xEof != 
307f0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
30800 45 6f 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a  Eof : xEof);....
30810 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
30820 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
30830 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
30840 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
30850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30860 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d    (module.xColum
30870 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  n != null) ? mod
30880 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78 43  ule.xColumn : xC
30890 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  olumn);....     
308a0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
308b0 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e  .xRowId = new Un
308c0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
308d0 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  s.xRowId(..     
308e0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
308f0 6c 65 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75 6c  le.xRowId != nul
30900 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 77  l) ? module.xRow
30910 49 64 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a 0d  Id : xRowId);...
30920 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
30930 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
30940 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30950 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
30960 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30970 20 20 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64 61     (module.xUpda
30980 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  te != null) ? mo
30990 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3a 20 78  dule.xUpdate : x
309a0 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20  Update);....    
309b0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
309c0 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55  e.xBegin = new U
309d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
309e0 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  ds.xBegin(..    
309f0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
30a00 75 6c 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e 75  ule.xBegin != nu
30a10 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65  ll) ? module.xBe
30a20 67 69 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d 0a  gin : xBegin);..
30a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
30a40 77 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20  wModule.xSync = 
30a50 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
30a60 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a  Methods.xSync(..
30a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a80 28 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21 3d  (module.xSync !=
30a90 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
30aa0 78 53 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b 0d  xSync : xSync);.
30ab0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
30ac0 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  ewModule.xCommit
30ad0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30ae0 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d  iveMethods.xComm
30af0 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
30b00 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f       (module.xCo
30b10 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  mmit != null) ? 
30b20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3a  module.xCommit :
30b30 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20   xCommit);....  
30b40 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
30b50 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20  ule.xRollback = 
30b60 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
30b70 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63  Methods.xRollbac
30b80 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
30b90 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c      (module.xRol
30ba0 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 3f  lback != null) ?
30bb0 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
30bc0 6b 20 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d  k : xRollback);.
30bd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
30be0 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ewModule.xFindFu
30bf0 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
30c00 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
30c10 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
30c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30c30 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75   (module.xFindFu
30c40 6e 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20  nction != null) 
30c50 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ? module.xFindFu
30c60 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20 20  nction :..      
30c70 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46            xFindF
30c80 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  unction);....   
30c90 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
30ca0 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77  le.xRename = new
30cb0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
30cc0 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20  hods.xRename(.. 
30cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
30ce0 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 21  module.xRename !
30cf0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
30d00 2e 78 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e 61  .xRename : xRena
30d10 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
30d20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53      newModule.xS
30d30 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
30d40 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30d50 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
30d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d70 28 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  (module.xSavepoi
30d80 6e 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  nt != null) ? mo
30d90 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
30da0 3a 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  : xSavepoint);..
30db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
30dc0 77 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  wModule.xRelease
30dd0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30de0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65  iveMethods.xRele
30df0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
30e00 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52        (module.xR
30e10 65 6c 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29 20  elease != null) 
30e20 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  ? module.xReleas
30e30 65 20 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a  e : xRelease);..
30e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
30e50 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  wModule.xRollbac
30e60 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
30e70 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
30e80 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
30e90 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
30ea0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  ule.xRollbackTo 
30eb0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
30ec0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a 0d  e.xRollbackTo :.
30ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30ee0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a   xRollbackTo);..
30ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
30f00 74 75 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b 0d  turn newModule;.
30f10 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
30f20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
30f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
30f70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
30f80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
30f90 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66  /// Calls one of
30fa0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
30fb0 6c 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  le initializatio
30fc0 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  n methods...    
30fd0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
30fe0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
30ff0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72 65  <param name="cre
31000 61 74 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ate">..        /
31010 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63  // Non-zero to c
31020 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72 65  all the <see cre
31030 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
31040 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
31050 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
31060 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69 73  method; otherwis
31070 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  e, the <see cref
31080 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
31090 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
310a0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
310b0 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63  method will be c
310c0 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  alled...        
310d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
310e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
310f0 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20   name="pDb">..  
31100 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
31110 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f  tive database co
31120 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e  nnection handle.
31130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
31140 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
31150 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
31160 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20  "pAux">..       
31170 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
31180 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  l native pointer
31190 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73 20   value that was 
311a0 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d  provided to the.
311b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
311c0 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
311d0 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72  le(), sqlite3_cr
311e0 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29  eate_module_v2()
311f0 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
31200 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
31210 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
31220 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  e() functions...
31230 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
31240 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
31250 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
31260 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgc">..        /
31270 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
31280 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20   arguments from 
31290 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
312a0 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
312b0 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
312c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
312d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
312e0 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
312f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
31300 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75  y of string argu
31310 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43  ments from the C
31320 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
31330 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  BLE..        ///
31340 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
31350 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
31360 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
31370 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
31380 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
31390 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
313a0 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
313b0 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
313c0 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e  o point to the n
313d0 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ewly..        //
313e0 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69 76 65  / created native
313f0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
31400 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
31410 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
31420 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
31430 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
31440 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  "pError">..     
31450 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
31460 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ure, this parame
31470 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
31480 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
31490 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20   the error..    
314a0 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c      /// message,
314b0 20 77 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c   with the underl
314c0 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69  ying memory havi
314d0 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64  ng been obtained
314e0 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
314f0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d     /// sqlite3_m
31500 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e  alloc() function
31510 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
31520 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
31530 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
31540 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
31550 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
31560 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
31570 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
31580 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
31590 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
315a0 6f 64 65 20 43 72 65 61 74 65 4f 72 43 6f 6e 6e  ode CreateOrConn
315b0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
315c0 20 20 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d 0a    bool create,..
315d0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
315e0 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
315f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
31600 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
31610 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
31620 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
31630 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
31640 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
31650 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
31660 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
31670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
31680 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
31690 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
316a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
316b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
316c0 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51  ng fileName = SQ
316d0 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e  LiteString.Strin
316e0 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
316f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31700 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
31710 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
31720 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44  3_db_filename(pD
31730 62 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  b, IntPtr.Zero))
31740 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31750 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
31760 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
31770 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51  nection = new SQ
31780 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d  LiteConnection(.
31790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
317a0 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 66 69           pDb, fi
317b0 6c 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d  leName, false)).
317c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
317d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
317e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
317f0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
31800 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
31810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
31820 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c  ring error = nul
31830 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
31840 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 63            if ((c
31850 72 65 61 74 65 20 26 26 20 43 72 65 61 74 65 28  reate && Create(
31860 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78  connection, pAux
31870 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
31880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
31890 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
318a0 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53  ngArrayFromUtf8S
318b0 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72 67  izeAndIntPtr(arg
318c0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
318d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318e0 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c 65  argv), ref table
318f0 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20  , ref error) == 
31900 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
31910 4f 6b 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  Ok) ||..        
31920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31930 28 21 63 72 65 61 74 65 20 26 26 20 43 6f 6e 6e  (!create && Conn
31940 65 63 74 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ect(connection, 
31950 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
31960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31970 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e     SQLiteString.
31980 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55  StringArrayFromU
31990 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72  tf8SizeAndIntPtr
319a0 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20  (argc,..        
319b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319c0 20 20 20 20 61 72 67 76 29 2c 20 72 65 66 20 74      argv), ref t
319d0 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f 72 29  able, ref error)
319e0 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
319f0 6f 64 65 2e 4f 6b 29 29 0d 0a 20 20 20 20 20 20  ode.Ok))..      
31a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
31a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31a20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
31a30 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
31a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a70 20 20 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c      pVtab = Tabl
31a80 65 54 6f 49 6e 74 50 74 72 28 74 61 62 6c 65 29  eToIntPtr(table)
31a90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
31aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
31ab0 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
31ac0 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
31ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ae0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
31b00 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
31b10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b30 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
31b40 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
31b50 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
31b60 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
31b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b80 20 20 20 20 20 20 20 20 22 6e 6f 20 74 61 62 6c          "no tabl
31b90 65 20 77 61 73 20 63 72 65 61 74 65 64 22 29 3b  e was created");
31ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31bb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31bd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31be0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
31bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31c10 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
31c20 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
31c30 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
31c40 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d  mString(error);.
31c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31c60 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31c70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
31c80 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31c90 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
31ca0 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54  eption e) /* NOT
31cb0 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c  E: Must catch AL
31cc0 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  L. */..         
31cd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31ce0 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53        pError = S
31cf0 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
31d00 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
31d10 28 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d  (e.ToString());.
31d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
31d40 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
31d50 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
31d60 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
31d70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
31dc0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
31dd0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
31de0 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65  Calls one of the
31df0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66   virtual table f
31e00 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68  inalization meth
31e10 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
31e20 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
31e30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31e40 20 6e 61 6d 65 3d 22 64 65 73 74 72 6f 79 22 3e   name="destroy">
31e50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
31e60 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74  n-zero to call t
31e70 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
31e80 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
31e90 6c 65 2e 44 65 73 74 72 6f 79 22 20 2f 3e 0d 0a  le.Destroy" />..
31ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
31eb0 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  od; otherwise, t
31ec0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
31ed0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
31ee0 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
31ef0 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
31f00 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 0d 0a 20  ethod will be.. 
31f10 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65         /// calle
31f20 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
31f30 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
31f40 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
31f50 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
31f60 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
31f70 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
31f80 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
31f90 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
31fa0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
31fb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
31fc0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
31fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
31fe0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
31ff0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
32000 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
32010 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
32020 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
32030 6f 64 65 20 44 65 73 74 72 6f 79 4f 72 44 69 73  ode DestroyOrDis
32040 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
32050 20 20 20 20 20 20 62 6f 6f 6c 20 64 65 73 74 72        bool destr
32060 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
32070 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
32080 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32090 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
320a0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
320b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
320c0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
320d0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
320e0 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  e = TableFromInt
320f0 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  Ptr(pVtab);.... 
32100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
32110 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
32120 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32130 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32140 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 64            if ((d
32150 65 73 74 72 6f 79 20 26 26 20 28 44 65 73 74 72  estroy && (Destr
32160 6f 79 28 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c  oy(table) == SQL
32170 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
32180 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
32190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 21                (!
321a0 64 65 73 74 72 6f 79 20 26 26 20 28 44 69 73 63  destroy && (Disc
321b0 6f 6e 6e 65 63 74 28 74 61 62 6c 65 29 20 3d 3d  onnect(table) ==
321c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
321d0 2e 4f 6b 29 29 29 0d 0a 20 20 20 20 20 20 20 20  .Ok)))..        
321e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
321f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32200 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
32210 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
32220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32230 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e 52          tables.R
32240 65 6d 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a 0d  emove(pVtab);...
32250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32260 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32270 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
32280 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok;..           
32290 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
322a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
322b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
322c0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
322d0 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
322e0 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
322f0 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
32300 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32310 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
32320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
32330 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
32340 6f 69 6e 74 2c 20 74 68 65 72 65 20 69 73 20 6e  oint, there is n
32350 6f 20 77 61 79 20 74 6f 20 72 65 70 6f 72 74 20  o way to report 
32360 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  the error..     
32370 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
32380 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62 61      condition ba
32390 63 6b 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72  ck to the caller
323a0 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 75 73 65  ; therefore, use
323b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
323c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
323d0 6f 67 67 69 6e 67 20 66 61 63 69 6c 69 74 79 20  ogging facility 
323e0 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20  instead...      
323f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
32400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
32410 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
32420 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32430 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4c 6f            if (Lo
32440 67 45 78 63 65 70 74 69 6f 6e 73 4e 6f 54 68 72  gExceptionsNoThr
32450 6f 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow)..           
32460 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32480 20 20 20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d      /* throw */.
32490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
324a0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
324b0 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51  og.LogMessage(SQ
324c0 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45  LiteBase.COR_E_E
324d0 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20  XCEPTION,..     
324e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
324f0 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
32500 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
32510 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
32520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32530 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
32540 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
32550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32560 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
32570 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 45 78 63  ativeMethods.Exc
32580 65 70 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72  eptionMessageFor
32590 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
325a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
325b0 20 20 64 65 73 74 72 6f 79 20 3f 20 22 78 44 65    destroy ? "xDe
325c0 73 74 72 6f 79 22 20 3a 20 22 78 44 69 73 63 6f  stroy" : "xDisco
325d0 6e 6e 65 63 74 22 2c 20 65 29 29 3b 0d 0a 20 20  nnect", e));..  
325e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
325f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
32600 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32610 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
32620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
32630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32640 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
32650 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
32660 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
32670 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32680 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
32690 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
326a0 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65              Free
326b0 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20  Table(pVtab);.. 
326c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
326d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
326e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
326f0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
32700 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
32710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32750 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
32760 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69     #region Stati
32770 63 20 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67  c Error Handling
32780 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
32790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
327a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
327b0 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72  /// Arranges for
327c0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65   the specified e
327d0 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20  rror message to 
327e0 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74  be placed into t
327f0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
32800 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66  zErrMsg field of
32810 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20   a sqlite3_vtab 
32820 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
32830 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a  e, freeing the..
32840 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73          /// exis
32850 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61  ting error messa
32860 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  ge, if any...   
32870 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
32880 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
32890 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
328a0 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  dule">..        
328b0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
328c0 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
328d0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
328e0 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d  nce to be used..
328f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
32900 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
32910 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
32920 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
32930 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
32940 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
32950 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32960 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
32970 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
32980 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32990 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
329a0 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20  ogErrors">..    
329b0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
329c0 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d   if this error m
329d0 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c  essage should al
329e0 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  so be logged usi
329f0 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
32a00 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
32a10 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
32a20 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32a30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32a40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32a50 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e  me="logException
32a60 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
32a70 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75   Non-zero if cau
32a80 67 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73  ght exceptions s
32a90 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20  hould be logged 
32aa0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
32ab0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
32ac0 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
32ad0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
32ae0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32af0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32b00 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
32b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32b20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
32b30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
32b40 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32b50 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
32b60 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
32b70 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
32b80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
32b90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
32ba0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
32bb0 62 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72  bool SetTableErr
32bc0 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
32bd0 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
32be0 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  dule,..         
32bf0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
32c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
32c10 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ol logErrors,.. 
32c20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
32c30 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a  logExceptions,..
32c40 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
32c50 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
32c60 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
32c70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32c80 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
32c90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32ca0 20 20 20 20 69 66 20 28 6c 6f 67 45 72 72 6f 72      if (logError
32cb0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
32cc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32cd0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
32ce0 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28  eLog.LogMessage(
32cf0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
32d00 45 72 72 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  Error,..        
32d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
32d30 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
32d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d50 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
32d60 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
32d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32d80 20 20 20 20 20 20 20 20 20 20 22 56 69 72 74 75            "Virtu
32d90 61 6c 20 74 61 62 6c 65 20 65 72 72 6f 72 3a 20  al table error: 
32da0 7b 30 7d 22 2c 20 65 72 72 6f 72 29 29 3b 20 2f  {0}", error)); /
32db0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
32dc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
32dd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
32de0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
32df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
32e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e10 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
32e20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
32e40 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73  l success = fals
32e50 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
32e60 49 6e 74 50 74 72 20 70 4e 65 77 45 72 72 6f 72  IntPtr pNewError
32e70 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
32e80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
32e90 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
32ea0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32eb0 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
32ec0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
32ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ee0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
32ef0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32f00 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20     int offset = 
32f10 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
32f20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
32f30 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
32f40 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
32f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f60 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
32f70 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
32f80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
32f90 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
32fa0 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
32fb0 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
32fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32fd0 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
32fe0 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
32ff0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33000 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 6c        IntPtr pOl
33010 64 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 4d  dError = SQLiteM
33020 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
33030 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 29  r(pVtab, offset)
33040 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
33050 20 20 20 20 20 69 66 20 28 70 4f 6c 64 45 72 72       if (pOldErr
33060 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or != IntPtr.Zer
33070 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
33080 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33090 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
330a0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 6c  eMemory.Free(pOl
330b0 64 45 72 72 6f 72 29 3b 20 70 4f 6c 64 45 72 72  dError); pOldErr
330c0 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  or = IntPtr.Zero
330d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
330e0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
330f0 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
33100 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20  (pVtab, offset, 
33110 70 4f 6c 64 45 72 72 6f 72 29 3b 0d 0a 20 20 20  pOldError);..   
33120 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
33130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33140 20 20 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 6e    if (error == n
33150 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
33160 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
33170 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
33180 20 20 20 20 20 20 20 20 20 20 70 4e 65 77 45 72            pNewEr
33190 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
331a0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
331b0 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d  mString(error);.
331c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
331d0 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
331e0 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61 62  riteIntPtr(pVtab
331f0 2c 20 6f 66 66 73 65 74 2c 20 70 4e 65 77 45 72  , offset, pNewEr
33200 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
33210 20 20 20 20 20 20 20 73 75 63 63 65 73 73 20 3d         success =
33220 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
33230 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
33240 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
33250 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20  ion e) /* NOTE: 
33260 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20  Must catch ALL. 
33270 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
33280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33290 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
332a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
332b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
332c0 66 20 28 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  f (logExceptions
332d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
332e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
332f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33300 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d    SQLiteLog.LogM
33310 65 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73  essage(SQLiteBas
33320 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f  e.COR_E_EXCEPTIO
33330 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  N,..            
33340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33350 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
33360 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
33370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33380 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
33390 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
333a0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
333b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
333c0 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
333d0 74 68 6f 64 73 2e 45 78 63 65 70 74 69 6f 6e 4d  thods.ExceptionM
333e0 65 73 73 61 67 65 46 6f 72 6d 61 74 2c 0d 0a 20  essageFormat,.. 
333f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33400 20 20 20 20 20 20 20 20 20 20 20 22 53 65 74 54             "SetT
33410 61 62 6c 65 45 72 72 6f 72 22 2c 20 65 29 29 3b  ableError", e));
33420 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
33430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33440 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
33450 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
33460 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
33470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
33480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33490 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
334a0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
334b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
334c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
334d0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
334e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
334f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
33500 21 73 75 63 63 65 73 73 20 26 26 20 28 70 4e 65  !success && (pNe
33510 77 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72  wError != IntPtr
33520 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20  .Zero))..       
33530 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
33540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33550 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
33560 65 28 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20  e(pNewError);.. 
33570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33580 20 20 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49     pNewError = I
33590 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
335a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
335b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
335c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
335d0 75 72 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20 20  urn success;..  
335e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
335f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33640 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
33650 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33660 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
33670 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
33680 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
33690 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
336a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
336b0 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
336c0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
336d0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
336e0 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
336f0 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
33700 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
33710 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
33720 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
33730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
33740 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
33750 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
33760 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
33770 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
33780 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
33790 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
337a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
337b0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
337c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
337d0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
337e0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
337f0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
33800 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
33810 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d  nstance used to.
33820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f  .        /// loo
33830 6b 75 70 20 74 68 65 20 6e 61 74 69 76 65 20 70  kup the native p
33840 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
33850 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
33860 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
33870 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33880 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
33890 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f   <param name="lo
338a0 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20  gErrors">..     
338b0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
338c0 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65  if this error me
338d0 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73  ssage should als
338e0 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  o be logged usin
338f0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
33900 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
33910 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
33920 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
33930 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
33940 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
33950 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  e="logExceptions
33960 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
33970 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67  Non-zero if caug
33980 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68  ht exceptions sh
33990 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75  ould be logged u
339a0 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
339b0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
339c0 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63  "SQLiteLog" /> c
339d0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
339e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
339f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
33a00 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
33a10 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65         /// The e
33a20 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
33a30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33a40 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
33a50 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
33a60 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
33a70 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
33a80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
33a90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
33aa0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
33ab0 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f  ool SetTableErro
33ac0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
33ad0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
33ae0 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ule,..          
33af0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
33b00 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20  able table,..   
33b10 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
33b20 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20  gErrors,..      
33b30 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78        bool logEx
33b40 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20  ceptions,..     
33b50 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72         string er
33b60 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
33b70 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
33b80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
33b90 61 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  able == null).. 
33ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
33bb0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
33bc0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
33bd0 74 72 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65  tr pVtab = table
33be0 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a  .NativeHandle;..
33bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
33c00 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74   (pVtab == IntPt
33c10 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
33c20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
33c30 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
33c40 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74        return Set
33c50 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20  TableError(..   
33c60 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
33c70 75 6c 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45  ule, pVtab, logE
33c80 72 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74  rrors, logExcept
33c90 69 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20  ions, error);.. 
33ca0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
33cb0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
33d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
33d10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
33d20 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74  / Arranges for t
33d30 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
33d40 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65  or message to be
33d50 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65   placed into the
33d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45  ..        /// zE
33d70 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61  rrMsg field of a
33d80 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
33d90 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c  rived structure,
33da0 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20   freeing the..  
33db0 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69        /// existi
33dc0 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ng error message
33dd0 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
33de0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
33df0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
33e00 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
33e10 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
33e20 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
33e30 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
33e40 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
33e50 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20  e to be used... 
33e60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33e70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
33e80 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
33e90 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
33ea0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
33eb0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
33ec0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
33ed0 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
33ee0 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
33ef0 2f 20 75 73 65 64 20 74 6f 20 67 65 74 20 74 68  / used to get th
33f00 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
33f10 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
33f20 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
33f30 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
33f40 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
33f50 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
33f60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
33f70 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e  ame="logErrors">
33f80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
33f90 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65  n-zero if this e
33fa0 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f  rror message sho
33fb0 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67  uld also be logg
33fc0 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
33fd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
33fe0 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
33ff0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
34000 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
34010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
34020 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63  ram name="logExc
34030 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20  eptions">..     
34040 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
34050 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74  if caught except
34060 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  ions should be l
34070 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
34080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
34090 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
340a0 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
340b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
340c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
340d0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
340e0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
340f0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
34100 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
34110 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
34120 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
34130 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
34140 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
34150 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
34160 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
34170 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
34180 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75  tatic bool SetCu
34190 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20  rsorError(..    
341a0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
341b0 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20  dule module,..  
341c0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
341d0 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
341e0 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
341f0 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
34200 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65      bool logExce
34210 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20  ptions,..       
34220 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f       string erro
34230 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
34240 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
34250 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 75           if (pCu
34260 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  rsor == IntPtr.Z
34270 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
34280 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
34290 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
342a0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20     IntPtr pVtab 
342b0 3d 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f  = TableFromCurso
342c0 72 28 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f  r(module, pCurso
342d0 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
342e0 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
342f0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
34300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
34310 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
34320 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
34330 6e 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28  n SetTableError(
34340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34350 20 20 6d 6f 64 75 6c 65 2c 20 70 56 74 61 62 2c    module, pVtab,
34360 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45   logErrors, logE
34370 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72  xceptions, error
34380 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
34390 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
343a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
343f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
34400 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20     /// Arranges 
34410 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
34420 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  d error message 
34430 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74  to be placed int
34440 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
34450 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64  // zErrMsg field
34460 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74   of a sqlite3_vt
34470 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
34480 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68  ture, freeing th
34490 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  e..        /// e
344a0 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65  xisting error me
344b0 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a  ssage, if any...
344c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
344d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
344e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
344f0 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
34500 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
34510 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
34520 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
34530 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65  stance to be use
34540 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
34550 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
34560 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
34570 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
34580 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
34590 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
345a0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
345b0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
345c0 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a 20 20  ance used to..  
345d0 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70        /// lookup
345e0 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
345f0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
34600 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
34610 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
34620 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
34630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
34640 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72  aram name="logEr
34650 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  rors">..        
34660 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
34670 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61  this error messa
34680 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62  ge should also b
34690 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74  e logged using t
346a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
346b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
346c0 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d  eLog" /> class..
346d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
346e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
346f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
34700 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d  logExceptions">.
34710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
34720 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74 20  -zero if caught 
34730 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c  exceptions shoul
34740 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  d be logged usin
34750 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
34760 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
34770 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
34780 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
34790 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
347a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
347b0 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
347c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f      /// The erro
347d0 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  r message...    
347e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
347f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
34800 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
34810 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
34820 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
34830 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
34840 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
34850 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
34860 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28   SetCursorError(
34870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
34880 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
34890 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
348a0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
348b0 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c  leCursor cursor,
348c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
348d0 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ol logErrors,.. 
348e0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
348f0 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a  logExceptions,..
34900 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
34910 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
34920 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
34930 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34940 69 66 20 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75  if (cursor == nu
34950 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
34960 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
34970 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
34980 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
34990 20 3d 20 63 75 72 73 6f 72 2e 4e 61 74 69 76 65   = cursor.Native
349a0 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Handle;....     
349b0 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73         if (pCurs
349c0 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or == IntPtr.Zer
349d0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
349e0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
349f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
34a00 20 72 65 74 75 72 6e 20 53 65 74 43 75 72 73 6f   return SetCurso
34a10 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  rError(..       
34a20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c           module,
34a30 20 70 43 75 72 73 6f 72 2c 20 6c 6f 67 45 72 72   pCursor, logErr
34a40 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f  ors, logExceptio
34a50 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ns, error);..   
34a60 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34a70 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
34a80 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
34a90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
34aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ae0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
34af0 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 4d  gion Protected M
34b00 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
34b10 23 72 65 67 69 6f 6e 20 4d 6f 64 75 6c 65 20 48  #region Module H
34b20 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
34b30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
34b40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
34b50 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72  / Gets and retur
34b60 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ns the <see cref
34b70 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
34b80 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
34b90 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ace..        ///
34ba0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
34bb0 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20  to be used when 
34bc0 63 72 65 61 74 69 6e 67 20 74 68 65 20 6e 61 74  creating the nat
34bd0 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ive sqlite3_modu
34be0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
34bf0 73 74 72 75 63 74 75 72 65 2e 20 20 44 65 72 69  structure.  Deri
34c00 76 65 64 20 63 6c 61 73 73 65 73 20 6d 61 79 20  ved classes may 
34c10 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65  override this me
34c20 74 68 6f 64 20 74 6f 20 73 75 70 70 6c 79 20 61  thod to supply a
34c30 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  n..        /// a
34c40 6c 74 65 72 6e 61 74 65 20 69 6d 70 6c 65 6d 65  lternate impleme
34c50 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  ntation for the 
34c60 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
34c70 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
34c80 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
34c90 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20  interface...    
34ca0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
34cb0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34cc0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
34cd0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
34ce0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
34cf0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
34d00 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
34d10 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20 20  tation to..     
34d20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 77     /// be used w
34d30 68 65 6e 20 70 6f 70 75 6c 61 74 69 6e 67 20 74  hen populating t
34d40 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
34d50 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
34d60 72 65 2e 20 20 49 66 0d 0a 20 20 20 20 20 20 20  re.  If..       
34d70 20 2f 2f 2f 20 74 68 65 20 72 65 74 75 72 6e 65   /// the returne
34d80 64 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c  d value is null,
34d90 20 74 68 65 20 70 72 69 76 61 74 65 20 6d 65 74   the private met
34da0 68 6f 64 73 20 70 72 6f 76 69 64 65 64 20 62 79  hods provided by
34db0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
34dc0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
34dd0 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c  iteModule" /> cl
34de0 61 73 73 20 61 6e 64 20 72 65 6c 61 74 69 6e 67  ass and relating
34df0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
34e00 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
34e10 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
34e20 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
34e30 65 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20  e  will be used 
34e40 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
34e50 63 72 65 61 74 65 20 74 68 65 20 6e 65 63 65 73  create the neces
34e60 73 61 72 79 20 64 65 6c 65 67 61 74 65 73 2e 0d  sary delegates..
34e70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
34e80 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
34e90 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
34ea0 61 6c 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  al ISQLiteNative
34eb0 4d 6f 64 75 6c 65 20 47 65 74 4e 61 74 69 76 65  Module GetNative
34ec0 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20  ModuleImpl()..  
34ed0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34ee0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
34ef0 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55 73 65 20 74  ; /* NOTE: Use t
34f00 68 65 20 62 75 69 6c 74 2d 69 6e 20 64 65 66 61  he built-in defa
34f10 75 6c 74 20 64 65 6c 65 67 61 74 65 73 2e 20 2a  ult delegates. *
34f20 2f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  /..        }....
34f30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
34f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
34f80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34f90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
34fa0 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e    /// Creates an
34fb0 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
34fc0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
34fd0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
34fe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
34ff0 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
35000 74 61 74 69 6f 6e 20 63 6f 72 72 65 73 70 6f 6e  tation correspon
35010 64 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72  ding to the curr
35020 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ent..        ///
35030 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
35040 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
35050 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
35060 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
35070 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
35080 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
35090 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
350a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
350b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
350c0 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65   interface imple
350d0 6d 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 20  mentation..     
350e0 20 20 20 2f 2f 2f 20 63 6f 72 72 65 73 70 6f 6e     /// correspon
350f0 64 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72  ding to the curr
35100 65 6e 74 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ent <see cref="S
35110 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
35120 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
35130 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
35140 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
35150 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
35160 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
35170 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
35180 64 75 6c 65 20 43 72 65 61 74 65 4e 61 74 69 76  dule CreateNativ
35190 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20  eModuleImpl().. 
351a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
351b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
351c0 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
351d0 75 6c 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ule(this);..    
351e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
351f0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
35200 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35250 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
35260 4e 61 74 69 76 65 20 54 61 62 6c 65 20 48 65 6c  Native Table Hel
35270 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
35280 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
35290 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
352a0 41 6c 6c 6f 63 61 74 65 73 20 61 20 6e 61 74 69  Allocates a nati
352b0 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
352c0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
352d0 65 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 0d  e and returns a.
352e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74  .        /// nat
352f0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69  ive pointer to i
35300 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
35310 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
35320 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
35330 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
35340 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
35350 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  to a native sqli
35360 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
35370 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
35380 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
35390 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
353a0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
353b0 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 54 61  ntPtr AllocateTa
353c0 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ble()..        {
353d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
353e0 74 20 73 69 7a 65 20 3d 20 4d 61 72 73 68 61 6c  t size = Marshal
353f0 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
35400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35410 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35420 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 74 61  hods.sqlite3_vta
35430 62 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  b));....        
35440 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
35450 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65  eMemory.Allocate
35460 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20  (size);..       
35470 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
35480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
354d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
354e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f          /// Zero
354f0 73 20 6f 75 74 20 74 68 65 20 66 69 65 6c 64 73  s out the fields
35500 20 6f 66 20 61 20 6e 61 74 69 76 65 20 73 71 6c   of a native sql
35510 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
35520 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
35530 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
35540 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35550 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
35560 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
35570 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
35580 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61  ointer to the na
35590 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
355a0 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
355b0 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ure to..        
355c0 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  /// zero...     
355d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
355e0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
355f0 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
35600 5a 65 72 6f 54 61 62 6c 65 28 0d 0a 20 20 20 20  ZeroTable(..    
35610 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
35620 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
35630 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
35640 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
35650 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
35660 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
35670 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
35680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
35690 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d  t offset = 0;...
356a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
356b0 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
356c0 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66  IntPtr(pVtab, of
356d0 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72  fset, IntPtr.Zer
356e0 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
356f0 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
35700 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
35710 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
35720 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
35730 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69   IntPtr.Size, si
35740 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
35750 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
35760 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
35770 74 33 32 28 70 56 74 61 62 2c 20 6f 66 66 73 65  t32(pVtab, offse
35780 74 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  t, 0);....      
35790 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
357a0 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
357b0 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
357c0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
357d0 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
357e0 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
357f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
35800 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
35810 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f  eIntPtr(pVtab, o
35820 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65  ffset, IntPtr.Ze
35830 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ro);..        }.
35840 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35890 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
358a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
358b0 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61       /// Frees a
358c0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
358d0 76 74 61 62 20 73 74 72 75 63 74 75 72 65 20 75  vtab structure u
358e0 73 69 6e 67 20 74 68 65 20 70 72 6f 76 69 64 65  sing the provide
358f0 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  d native..      
35900 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74 6f    /// pointer to
35910 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   it...        //
35920 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
35930 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
35940 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
35950 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61          /// A na
35960 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
35970 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  a native sqlite3
35980 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
35990 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
359a0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
359b0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
359c0 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 46  d virtual void F
359d0 72 65 65 54 61 62 6c 65 28 0d 0a 20 20 20 20 20  reeTable(..     
359e0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
359f0 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
35a00 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
35a10 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
35a20 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20  bleError(pVtab, 
35a30 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
35a40 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
35a50 2e 46 72 65 65 28 70 56 74 61 62 29 3b 0d 0a 20  .Free(pVtab);.. 
35a60 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
35a70 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
35a80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35ad0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
35ae0 6f 6e 20 4e 61 74 69 76 65 20 43 75 72 73 6f 72  on Native Cursor
35af0 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
35b00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
35b10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
35b20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 20  /// Allocates a 
35b30 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
35b40 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
35b50 65 64 20 73 74 72 75 63 74 75 72 65 20 61 6e 64  ed structure and
35b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65  ..        /// re
35b70 74 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70  turns a native p
35b80 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20  ointer to it... 
35b90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
35ba0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
35bb0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
35bc0 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69        /// A nati
35bd0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
35be0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
35bf0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
35c00 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
35c10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
35c20 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
35c30 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
35c40 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65   IntPtr Allocate
35c50 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20  Cursor()..      
35c60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35c70 20 69 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72 73   int size = Mars
35c80 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
35c90 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
35ca0 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
35cb0 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
35cc0 76 74 61 62 5f 63 75 72 73 6f 72 29 29 3b 0d 0a  vtab_cursor));..
35cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
35ce0 74 75 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72  turn SQLiteMemor
35cf0 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29  y.Allocate(size)
35d00 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
35d10 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35d60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35d70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35d80 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e 61    /// Frees a na
35d90 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
35da0 62 5f 63 75 72 73 6f 72 20 73 74 72 75 63 74 75  b_cursor structu
35db0 72 65 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f  re using the pro
35dc0 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  vided..        /
35dd0 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  // native pointe
35de0 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20  r to it...      
35df0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
35e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
35e10 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
35e20 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
35e30 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  / A native point
35e40 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73  er to a native s
35e50 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
35e60 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
35e70 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
35e80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
35e90 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
35ea0 69 72 74 75 61 6c 20 76 6f 69 64 20 46 72 65 65  irtual void Free
35eb0 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
35ec0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
35ed0 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
35ee0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
35ef0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
35f00 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 75  eMemory.Free(pCu
35f10 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
35f20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
35f30 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
35f40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f80 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35f90 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74      #region Stat
35fa0 69 63 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20  ic Table Lookup 
35fb0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
35fc0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
35fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64          /// Read
35fe0 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
35ff0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
36000 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
36010 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
36020 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
36030 75 72 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ure based on the
36040 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
36050 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
36060 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
36070 20 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20      /// derived 
36080 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
36090 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
360a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
360b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
360c0 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ule">..        /
360d0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
360e0 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
360f0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
36100 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a  ce to be used...
36110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
36120 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
36130 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
36140 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
36150 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
36160 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
36170 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
36180 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
36190 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f  cture..        /
361a0 2f 2f 20 66 72 6f 6d 20 77 68 69 63 68 20 74 6f  // from which to
361b0 20 72 65 61 64 20 74 68 65 20 6e 61 74 69 76 65   read the native
361c0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
361d0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
361e0 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
361f0 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
36200 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
36210 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
36220 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
36230 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
36240 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
36250 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
36260 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
36270 2d 4f 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f 2f  -OR-..        //
36280 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
36290 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20  Ptr.Zero" /> if 
362a0 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
362b0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
362c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
362d0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
362e0 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  e static IntPtr 
362f0 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28  TableFromCursor(
36300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
36310 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
36320 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
36330 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
36340 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
36350 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36360 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f        if (pCurso
36370 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r == IntPtr.Zero
36380 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
36390 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
363a0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
363b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
363c0 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
363d0 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20  pCursor);..     
363e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
363f0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
36400 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
36410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
36450 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54         #region T
36460 61 62 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65 74 68  able Lookup Meth
36470 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
36480 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
36490 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e      /// Reads an
364a0 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61  d returns the na
364b0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
364c0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
364d0 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
364e0 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
364f0 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74  based on the nat
36500 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
36510 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
36520 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cursor..        
36530 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74 72 75  /// derived stru
36540 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
36550 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
36560 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
36570 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
36580 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
36590 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
365a0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
365b0 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
365c0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 0d  rived structure.
365d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f  .        /// fro
365e0 6d 20 77 68 69 63 68 20 74 6f 20 72 65 61 64 20  m which to read 
365f0 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  the native point
36600 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
36610 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a  3_vtab derived..
36620 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
36630 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
36640 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
36650 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
36660 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
36670 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
36680 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
36690 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
366a0 73 74 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a  structure -OR-..
366b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
366c0 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
366d0 72 6f 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e  ro" /> if it can
366e0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
366f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
36700 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
36710 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
36720 72 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62  rtual IntPtr Tab
36730 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a 20  leFromCursor(.. 
36740 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
36750 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
36760 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
36770 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36780 20 72 65 74 75 72 6e 20 54 61 62 6c 65 46 72 6f   return TableFro
36790 6d 43 75 72 73 6f 72 28 74 68 69 73 2c 20 70 43  mCursor(this, pC
367a0 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
367b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
367c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36800 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36810 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
36820 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b          /// Look
36830 73 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73  s up and returns
36840 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
36850 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
36860 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
36870 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
36880 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  nce based on the
36890 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
368a0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
368b0 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
368c0 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
368d0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
368e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
368f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
36900 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
36910 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
36920 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
36930 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
36940 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
36950 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
36960 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
36970 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
36980 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
36990 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
369a0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
369b0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
369c0 61 6e 63 65 20 6f 72 20 6e 75 6c 6c 20 69 66 0d  ance or null if.
369d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
369e0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f   corresponding o
369f0 6e 65 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75  ne cannot be fou
36a00 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nd...        ///
36a10 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
36a20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
36a30 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72  irtual SQLiteVir
36a40 74 75 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 46  tualTable TableF
36a50 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  romIntPtr(..    
36a60 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
36a70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
36a80 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
36a90 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
36aa0 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
36ab0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
36ac0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36ad0 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72        SetTableEr
36ae0 72 6f 72 28 70 56 74 61 62 2c 20 22 69 6e 76 61  ror(pVtab, "inva
36af0 6c 69 64 20 6e 61 74 69 76 65 20 74 61 62 6c 65  lid native table
36b00 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
36b10 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
36b20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
36b30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36b40 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
36b50 6c 65 20 74 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20  le table;....   
36b60 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61           if ((ta
36b70 62 6c 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  bles != null) &&
36b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36b90 20 20 74 61 62 6c 65 73 2e 54 72 79 47 65 74 56    tables.TryGetV
36ba0 61 6c 75 65 28 70 56 74 61 62 2c 20 6f 75 74 20  alue(pVtab, out 
36bb0 74 61 62 6c 65 29 29 0d 0a 20 20 20 20 20 20 20  table))..       
36bc0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36bd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
36be0 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  able;..         
36bf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
36c00 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
36c10 72 28 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d  r(pVtab, HelperM
36c20 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
36c30 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
36c40 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
36c50 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
36c60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
36c70 20 20 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c     "managed tabl
36c80 65 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f  e for {0} not fo
36c90 75 6e 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a  und", pVtab));..
36ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
36cb0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
36cc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
36cd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
36ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
36d20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
36d30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
36d40 6c 6c 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74  llocates and ret
36d50 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f  urns a native po
36d60 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74  inter to a sqlit
36d70 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
36d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
36d90 75 63 74 75 72 65 20 61 6e 64 20 63 72 65 61 74  ucture and creat
36da0 65 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f  es an associatio
36db0 6e 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64  n between it and
36dc0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
36dd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
36de0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
36df0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
36e00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
36e10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
36e20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
36e30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
36e40 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
36e50 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
36e60 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
36e70 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
36e80 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62  ct instance to b
36e90 65 20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20  e used..        
36ea0 2f 2f 2f 20 77 68 65 6e 20 63 72 65 61 74 69 6e  /// when creatin
36eb0 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f  g the associatio
36ec0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
36ed0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36ee0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
36ef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
36f00 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
36f10 74 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61  to a sqlite3_vta
36f20 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
36f30 75 72 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ure or..        
36f40 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
36f50 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69  ntPtr.Zero" /> i
36f60 66 20 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69  f the method fai
36f70 6c 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f  ls for any reaso
36f80 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
36f90 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
36fa0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
36fb0 72 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62  rtual IntPtr Tab
36fc0 6c 65 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20  leToIntPtr(..   
36fd0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
36fe0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
36ff0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
37000 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
37010 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61           if ((ta
37020 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  ble == null) || 
37030 28 74 61 62 6c 65 73 20 3d 3d 20 6e 75 6c 6c 29  (tables == null)
37040 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
37050 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
37060 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
37070 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
37080 61 62 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ab = IntPtr.Zero
37090 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ;..            b
370a0 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61  ool success = fa
370b0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
370c0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
370d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
370e0 20 20 20 20 20 20 20 20 70 56 74 61 62 20 3d 20          pVtab = 
370f0 41 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 3b  AllocateTable();
37100 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37110 20 20 20 20 69 66 20 28 70 56 74 61 62 20 21 3d      if (pVtab !=
37120 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
37130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
37140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37150 20 20 20 20 20 20 5a 65 72 6f 54 61 62 6c 65 28        ZeroTable(
37160 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20  pVtab);..       
37170 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
37180 6c 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  le.NativeHandle 
37190 3d 20 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20  = pVtab;..      
371a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
371b0 62 6c 65 73 2e 41 64 64 28 70 56 74 61 62 2c 20  bles.Add(pVtab, 
371c0 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  table);..       
371d0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63               suc
371e0 63 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20  cess = true;..  
371f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
37200 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
37210 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
37220 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
37230 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
37240 20 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73      if (!success
37250 20 26 26 20 28 70 56 74 61 62 20 21 3d 20 49 6e   && (pVtab != In
37260 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
37270 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
37280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37290 20 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56      FreeTable(pV
372a0 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
372b0 20 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62             pVtab
372c0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
372d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
372e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
372f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
37300 20 72 65 74 75 72 6e 20 70 56 74 61 62 3b 0d 0a   return pVtab;..
37310 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37320 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
37330 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37380 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
37390 69 6f 6e 20 43 75 72 73 6f 72 20 4c 6f 6f 6b 75  ion Cursor Looku
373a0 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  p 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 4c 6f  ..        /// Lo
373d0 6f 6b 73 20 75 70 20 61 6e 64 20 72 65 74 75 72  oks up and retur
373e0 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ns the <see cref
373f0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
37400 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 0d 0a  ableCursor" />..
37410 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
37420 63 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65  ct instance base
37430 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20  d on the native 
37440 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a  pointer to the..
37450 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
37460 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
37470 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
37480 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
37490 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
374a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
374b0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
374c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
374d0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
374e0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
374f0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
37500 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
37510 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
37520 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
37530 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
37540 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
37550 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
37560 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
37570 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
37580 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
37590 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
375a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
375b0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
375c0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
375d0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
375e0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
375f0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
37600 65 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20  e or null..     
37610 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 63 6f     /// if the co
37620 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65 20  rresponding one 
37630 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2e  cannot be found.
37640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
37650 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
37660 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
37670 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61  ual SQLiteVirtua
37680 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 43 75 72  lTableCursor Cur
37690 73 6f 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a  sorFromIntPtr(..
376a0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
376b0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
376c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
376d0 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
376e0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
376f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
37700 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
37710 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
37720 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37730 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
37740 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69  eError(pVtab, "i
37750 6e 76 61 6c 69 64 20 6e 61 74 69 76 65 20 63 75  nvalid native cu
37760 72 73 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20  rsor");..       
37770 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
37780 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
37790 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
377a0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
377b0 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
377c0 73 6f 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  sor;....        
377d0 20 20 20 20 69 66 20 28 28 63 75 72 73 6f 72 73      if ((cursors
377e0 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
377f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75                cu
37800 72 73 6f 72 73 2e 54 72 79 47 65 74 56 61 6c 75  rsors.TryGetValu
37810 65 28 70 43 75 72 73 6f 72 2c 20 6f 75 74 20 63  e(pCursor, out c
37820 75 72 73 6f 72 29 29 0d 0a 20 20 20 20 20 20 20  ursor))..       
37830 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37840 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
37850 75 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  ursor;..        
37860 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
37870 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72       SetTableErr
37880 6f 72 28 70 56 74 61 62 2c 20 48 65 6c 70 65 72  or(pVtab, Helper
37890 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
378a0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
378b0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
378c0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
378d0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
378e0 20 20 20 20 22 6d 61 6e 61 67 65 64 20 63 75 72      "managed cur
378f0 73 6f 72 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20  sor for {0} not 
37900 66 6f 75 6e 64 22 2c 20 70 43 75 72 73 6f 72 29  found", pCursor)
37910 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
37920 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
37930 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
37940 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
37950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
37990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
379a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
379b0 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 6e 64  // Allocates and
379c0 20 72 65 74 75 72 6e 73 20 61 20 6e 61 74 69 76   returns a nativ
379d0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73  e pointer to a s
379e0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
379f0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
37a00 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
37a10 65 20 61 6e 64 20 63 72 65 61 74 65 73 20 61 6e  e and creates an
37a20 20 61 73 73 6f 63 69 61 74 69 6f 6e 20 62 65 74   association bet
37a30 77 65 65 6e 20 69 74 20 61 6e 64 20 74 68 65 0d  ween it and the.
37a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  .        /// spe
37a50 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
37a60 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
37a70 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
37a80 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
37a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
37aa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
37ab0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
37ac0 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
37ad0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
37ae0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
37af0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
37b00 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
37b10 6e 63 65 20 74 6f 20 62 65 0d 0a 20 20 20 20 20  nce to be..     
37b20 20 20 20 2f 2f 2f 20 75 73 65 64 20 77 68 65 6e     /// used when
37b30 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 61 73   creating the as
37b40 73 6f 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  sociation...    
37b50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
37b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
37b70 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
37b80 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
37b90 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c  pointer to a sql
37ba0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
37bb0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
37bc0 72 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  re or..        /
37bd0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
37be0 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
37bf0 20 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c   the method fail
37c00 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e  s for any reason
37c10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37c20 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
37c30 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
37c40 74 75 61 6c 20 49 6e 74 50 74 72 20 43 75 72 73  tual IntPtr Curs
37c50 6f 72 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20  orToIntPtr(..   
37c60 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
37c70 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
37c80 72 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20  r cursor..      
37c90 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
37ca0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
37cb0 69 66 20 28 28 63 75 72 73 6f 72 20 3d 3d 20 6e  if ((cursor == n
37cc0 75 6c 6c 29 20 7c 7c 20 28 63 75 72 73 6f 72 73  ull) || (cursors
37cd0 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
37ce0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
37cf0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
37d00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ...            I
37d10 6e 74 50 74 72 20 70 43 75 72 73 6f 72 20 3d 20  ntPtr pCursor = 
37d20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
37d30 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73            bool s
37d40 75 63 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d  uccess = false;.
37d50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
37d60 72 79 0d 0a 20 20 20 20